多维数组循环(PHP) - 更好的方法?

时间:2014-09-13 09:19:49

标签: php arrays sorting loops multidimensional-array

是否有更好/更有效的方法来循环使用这些数据?

我需要使用' Name'来循环遍历数组数据。首先是' ListID'第二,但外部API请求根据下面的代码生成数组(反过来)。

// Array Data
$csList = array(
    array(
        'ListID' => 'BGERFwQTrHoseE4sweebqwyAxuJ9YU',
        'Name' => 'Monthly Newsletter Subscribers'
    ),
    array(
        'ListID' => 'kHdUQMbELgMyojuATz9Dsbxz3WViVo',
        'Name' => 'Special Mailout'
    )
);

// Generate Array Varaibles
foreach($csList as $array => $values) { 
    foreach($values as $k => $v) { 
        for($i = 1; $i < count($csList); $i++) {
            $csListData[$k][] = $v;
        }
    }            
}

// Loop Data
for($i = 0; $i < count($csList); $i++) {
    echo $csListData['Name'][$i].'<br>';
    echo $csListData['ListID'][$i].'<br>';
}

3 个答案:

答案 0 :(得分:0)

您的内部for循环无用。您可以使用$array键获取所需的数组:

foreach($csList as $array => $values) { 
    foreach($values as $k => $v) { 
      $csListData[$k][$array] = $v;  
    }            
}

// Loop Data
for($i = 0, $c = count($csList); $i <$c; $i++) {
    echo '<br>';
    echo $csListData['Name'][$i].'<br>';
    echo $csListData['ListID'][$i].'<br>';
}

此外,将count()移出检查将避免在循环的每次迭代中计数。

答案 1 :(得分:0)

// Array Data
$csList = array(
   array(
    'ListID' => 'BGERFwQTrHoseE4sweebqwyAxuJ9YU',
    'Name' => 'Monthly Newsletter Subscribers'
   ),
   array(
    'ListID' => 'kHdUQMbELgMyojuATz9Dsbxz3WViVo',
    'Name' => 'Special Mailout'
  )
);

您可以执行以下操作:

$newCsList = array();
$newCsList = array_map(function ($val){
     return array_reverse($val,true);
},$csList);

结果如下:

**Array ( 
        [0] => Array ( 
                        [Name] => Monthly Newsletter Subscribers 
                        [ListID] => BGERFwQTrHoseE4sweebqwyAxuJ9YU 
                     ) 
        [1] => Array ( 
                        [Name] => Special Mailout 
                        [ListID] => kHdUQMbELgMyojuATz9Dsbxz3WViVo 
                     ) 
  )** 

但是你可以做每个元素:

 $newCsList = array();
$newCsList = array_map(function ($val){
     $my_test_ary = array_reverse($val);
     echo $my_test_ary['Name'].'<br/>'.$my_test_ary['ListId'];

},$csList);

答案 2 :(得分:0)

为什么要重新排列数据并不清楚。遍历数组并以您想要的任何顺序访问您想要的任何键。

 $csList = array(
    array(
        'ListID' => 'BGERFwQTrHoseE4sweebqwyAxuJ9YU',
        'Name' => 'Monthly Newsletter Subscribers'
    ),
    array(
        'ListID' => 'kHdUQMbELgMyojuATz9Dsbxz3WViVo',
        'Name' => 'Special Mailout'
    )
);

foreach ($csList as $item) {
    echo $item['Name'].'<br>';
    echo $item['ListID'].'<br>';
}