2014-01-09 2 views
-2

вот мой $bob массив:PHP Foreach меня с ума для Concat ключа со значением

Array 
(
    [n] => Array 
     (
      [0] => 1 
     ) 

    [m] => Array 
     (
      [0] => 1 
      [1] => 2 
     ) 

    [l] => Array 
     (
      [0] => 1 
      [1] => 4 
      [2] => 64 
     ) 

    [o] => Array 
     (
      [0] => 1 
      [1] => 4 
     ) 
    ) 

И мне нужно вывести в:

  • п-1
  • м-1, м- 2
  • л-1, L-4, L-64
  • о-1, о-4

I судимое некоторые

foreach ($bob as $value) { 

    foreach ($value as &res) 

    $value = $bob . "-" . $res; 
} 
} 

Я думаю, его жаль, но я PHP newbe .. Вся помощь будет приветствовать, Джесс

+0

посмотреть на использование 'Еогеасп ($ боб, как $ ключ => $ value) 'и создание нового массива во время итераций вложенного цикла –

+0

не знаю почему, но он дает мне предупреждение: неверный аргумент, предоставленный foreach() – albator

ответ

1
foreach ($bob as $key => $value) { 
    foreach ($value as $res){ 
     echo $key . "-" . $res ." "; 
    } 
} 

Синтаксис foreach ($bob as $key => $value) дает вам каждую клавишу для каждого значения. Затем вы можете перебрать массив $ value, чтобы получить нужные вам числа.

+0

не знаю почему, но он дает мне предупреждение: неверный аргумент, предоставленный foreach() – albator

+0

не работает ... – albator

+0

@albator Что произойдет, если вы просто выполните 'print_r ($ боб) '?Вы получаете тот же массив, что и ваш вопрос? – Jim

0

Вы можете попробовать это,

foreach ($bob as $key=>$value) { 
    foreach ($value as $res){   
    echo $value = $key . "-" . $res."<br/>"; 
    } 
} 
+0

, не знает, почему, но он дает мне предупреждение: неверный аргумент предоставлен for foreach() – albator

+0

Вы пробовали мой код? makeure '$ bob' содержит значение массива. Я проверил, он дал ожидаемый результат –

0

попробовать $res вместо &res в следующей строке:

foreach ($value as &res) 
3

Вы промах фигурных скобки после Еогеаспа и missprint с & Реза -> $ Реза попытаться использовать Еогеасп с $ ключа Попробуйте

<?php 

$bob = [ 
     'n' => [0 => 1], 
     'm' => [0 => 1, 1 => 2], 
     'l' => [0 => 1, 1 => 4, 2 => 64], 
     'o' => [1 => 1, 1 => 4], 
]; 

foreach ($bob as $key => $value) { 
     foreach ($value as $res) { 
       echo $key . "-" . $res . PHP_EOL; 
     } 
} 

Этот выход для меня

php test.php 
n-1 
m-1 
m-2 
l-1 
l-4 
l-64 
o-4 
0

Попробуйте это:
это даст вам точный результат с, и новую линию
Живая демонстрация: https://eval.in/87738

$ обр = массив ( 'п' => массив ( 0 => 1 ),

'm' => array 
    (
     0 => 1, 
     1 => 2 
    ), 

'l' => array 
    (
     0 => 1 
    ), 

'0' => array 
    (
     0 => 1, 
     1 => 2, 
     2 => 64, 
     3 => 120, 
    ) 
    ); 
    $output = ''; 
    foreach($arr as $k1 =>$v1){ 
    $out = ' '; 
    foreach($arr[$k1] as $k => $v){ 
     $out .= $k1.'-'.$v.','; 
    } 
    $output .= rtrim($out,',').'<br/>'; 
    } 

    echo $output; 

Выход:

п-1
м-1, м-2
л-1
0-1,0-2,0-64,0-120

+0

@albator: можете ли вы попробовать это? –

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