【问题标题】:Loop array content value consist of single value and array循环数组内容值由单个值和数组组成
【发布时间】:2015-12-04 05:05:53
【问题描述】:

我试图循环这个数组,但我仍然得到错误

我有一个这样的数组:

1 => ["name"=>"A", "related"=>[
["signal"=>"A1", "color"=>"green"],
["signal"=>"A2", "color"=>"lime"],
["signal"=>"A3","color"=>"yellowGreen"]
]] 
2 => ["name"=>"B", "related"=>[
["signal"=>"B1", "color"=>"Red"],
["signal"=>"B2", "color"=>"Pink"]
]]

如何显示为 - A : Green、lime、yellowGreeb - B:红色、粉色

这是我尝试以上述格式显示的代码

foreach($arr as $key => $value){
  echo $value["name"];
  foreach($value["related"] as $k){
    echo $k["color"] . ",";
  }
}

这个数组没有 $value["related"] 索引会抛出错误。但它可以回显 $value["name"]???

谢谢!

【问题讨论】:

  • 您的错误是什么?当“- B: Red, Pink”不在您的阵列中时,您如何获得它?
  • 谢谢!我已经更新了我的帖子!
  • @QUANGTRAN 查看更新的答案

标签: php arrays associative-array


【解决方案1】:

找到以下解决方案:

$array = [1 => [
    "name" => "A",
    "related" => [
        ["signal" => "A1", "color" => "green"],
        ["signal" => "A2", "color" => "lime"],
        ["signal" => "A3", "color" => "yellowGreen"]
    ]
],
    2 => ["name" => "B", "related" => [
        ["signal" => "B1", "color" => "Red"],
        ["signal" => "B2", "color" => "Pink"]
    ]]
];

foreach ($array as $ar) {
    $new_arr = array_column($ar['related'], 'color');
    $required_string = implode(', ', $new_arr);
    echo $ar['name'].' : ' .$required_string;
    echo "<br />";
}

对于 PHP 版本

foreach ($array as $ar) {
    $new_arr = array_map(function ($value) {
        return  $value['color'];
    }, $ar['related']);
    $required_string = implode(', ', $new_arr);
    echo $ar['name'].' : ' .$required_string;
    echo "<br />";
}

你可以在http://php.net/manual/en/control-structures.foreach.php找到更多关于foreach循环的细节

【讨论】:

  • 这仅适用于PHP &gt; 5.5 版本。 Check This
  • 是的,对于旧版本,您需要更改数组的语法。$array = array(1 =&gt; ...)
  • 感谢您的回答! :D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-30
  • 2014-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多