2016-04-08 20 views
1

Aşağıdaki gibi php olarak bir dizi $categories var.Dizi öğeleri nasıl aktarılır?

Array 
(
    [item_name] => Array 
     (
      [0] => I-Phone 
      [1] => samsung 
      [2] => nokia 
      [3] => htc 
     ) 

    [item_price] => Array 
     (
      [0] => 30.00 
      [1] => 20 
      [2] => 10 
      [3] => 15 
     ) 
) 

Ve olma unsurunu devrik istiyorum, foreach döngüsü kullanarak ancak çalışmıyor denedim

Array 
(
    [0] => Array 
     (
      [item_name] => I-Phone 
      [item_price] => 30.00 
     ) 

    [1] => Array 
     (
      [item_name] => samsung 
      [item_price] => 20 
     ) 
    [2] => Array 
     (
      [item_name] => nokia 
      [item_price] => 10 
     ) 

    [2] => Array 
     (
      [item_name] => htc 
      [item_price] => 15 
     ) 
) 

. Böyle

$count=0; 
foreach ($categories as $key=> $category) 
{ 
     $categories[$count] = $category[$key]; 
     $categories[$count] = $category[$key]; 
     $count++; 
} 

cevap

5

bir yaklaşımdır:

$categories = array(
    'item_name' => array('I-Phone', 'samsung', 'nokia','htc'), 
    'item_price' => array('30.00', '20', '10', '15') 
); 

$out = array(); 
foreach($categories as $key => $a){ 
    foreach($a as $k => $v){ 
     $out[$k][$key] = $v; 
    } 
} 
echo '<pre>'; 
print_r($out); 
echo '</pre>'; 
+0

Thanx lars, mükemmel çalışma, temiz, basit ve hızlı. Detaylandırır mısın? –

+1

Elbette, dış foreach, bir kez item_name için ve bir kez de item_price için çalışır. İlk geçişte, $ out [0] ['item_name'] 'ile $ out [3] ['item_name']' arasında dört yeni dizi öğesi oluşturur. İkinci geçişte, item_prices doldurulur. İki dizinin aynı sayıda öğeye sahip olması gerektiğine dikkat edin. Farklı sayıda elemanlar varsa, bu beklendiği gibi çalışmayacaktır. – larsAnders

+0

Ayrıca, @RomanPerekhrest'in zarif çözümünü kaçırmayın. – larsAnders

0

şey: Burada

$categories = array(); // your array 
$ctg_names = array_keys($categories); // get names of source array keys 
$new_ctgs = array(); // result array 

// iterate over first key values to get indexes 
foreach ($categories[$ctg_names[0]] as $k => $v) { 
    $ctg = array(); 
    // iterate over all key names 
    foreach ($ctg_names as $name) { 
     $ctg[$name] = $categories[$name][$k]; 
    } 
    $new_ctgs[] = $ctg; 
} 

print_r($new_ctgs); 
0

bu deneyin:

<?php 

$array = Array 
(
    'item_name' => Array 
     (
      '0' => 'I-Phone', 
      '1' => 'samsung', 
      '2' => 'nokia', 
      '3' => 'htc', 
     ), 

    'item_price' => Array 
     (
      '0' => 30.00, 
      '1' => 20, 
      '2' => 10, 
      '3' => 15, 
     ) 
); 

$keys = array_keys($array); 
$result = array(); 

for($i = 0; $i < count($array['item_name']); $i++) 
{ 
    $tempArray = array(); 
    foreach($keys as $key) 
     $tempArray[$key] = $array[$key][$i]; 

    $result[] = $tempArray; 
} 

Çıktı:

Array 
(
    [0] => Array 
     (
      [item_name] => I-Phone 
      [item_price] => 30 
     ) 

    [1] => Array 
     (
      [item_name] => samsung 
      [item_price] => 20 
     ) 

    [2] => Array 
     (
      [item_name] => nokia 
      [item_price] => 10 
     ) 

    [3] => Array 
     (
      [item_name] => htc 
      [item_price] => 15 
     ) 

) 
0
$result = []; 
foreach($categories['Item_name'] as $key => $data){ 
    $result[$key]['category'] = $categories['Item_name']['$key']; 
    $result[$key]['price'] = $categories['price'][$key]; 
} 
dd($result); 
1

array_keys ve array_map işlevlerini kullanarak basit bir çözüm:

$keys = array_keys($categories); 
$transposed = array_map(function($a, $b) use($keys){ 
    return [$keys[0] => $a, $keys[1] => $b]; 
}, $categories['item_name'], $categories['item_price']); 

print_r($transposed); 

çıkışı:

Array 
(
    [0] => Array 
     (
      [item_name] => I-Phone 
      [item_price] => 30 
     ) 

    [1] => Array 
     (
      [item_name] => samsung 
      [item_price] => 20 
     ) 

    [2] => Array 
     (
      [item_name] => nokia 
      [item_price] => 10 
     ) 

    [3] => Array 
     (
      [item_name] => htc 
      [item_price] => 15 
     )  
) 
İlgili konular