2012-05-15 4 views
1

Я пытаюсь получить петлю Еогеаспа, чтобы отобразить все значения массива, но по какой-то причине он пропускает значение 4.PHP цикл массива Еогеасп пропуск одного ключа

echo $sku."<br>"; 
$skuArray = explode(" ", $sku); 
$skuCount = array_count_values($skuArray); 
print_r($skuArray); 
echo "<br><br>"; 
$i=0; 
foreach ($skuCount as $key => $val) { 
    echo "[".$i."] => ".$key." "; 
    $i++; 
} 

и это является тем, что выход выглядит следующим образом:

1DALI0SPBA775RW 2 $92.99 1GJESSGRIP10000 2 $9.99 

Array ([0] => 1DALI0SPBA775RW 
     [1] => 2 
     [2] => $92.99 
     [3] => 1GJESSGRIP10000 
     [4] => 2 
     [5] => $9.99) 

[0] => 1DALI0SPBA775RW 
[1] => 2 
[2] => $92.99 
[3] => 1GJESSGRIP10000 
[4] => $9.99 

Как вы можете видеть, цикл Еогеасп говорит, что 4 равна $ 9,99, а в print_r массива оно равно 2 - что то, что я ожидаю, что это будет.

+4

'array_count_values' суммирует количество раз, когда определенный элемент появляется в массиве. –

+1

Проблема в том, что ваш foreach смотрит на skuCount, почему бы не сделать ваш foreach на skyuArray? – DaOgre

ответ

3

Это то, что вы хотите:

echo $sku."<br>"; 
$skuArray = explode(" ", $sku); 
print_r($skuArray); 
echo "<br><br>"; 
$i=0; 
foreach ($skuArray as $key => $val) { 
    echo "[".$key."] => ".$val." "; 
} 

array_count_values($skuArray) фактически создает массив, который вы можете перебрать, но с дубликатами Опущенные к одному значению. См. documentation.

Смежные вопросы