如何遍历多维数组以检索值为1的键?

时间:2017-11-08 02:15:30

标签: php arrays multidimensional-array laravel-5

这是我的数组:[["STR_License_Driver",1],["STR_License_Truck",0],["STR_License_Pilot",1],["STR_License_Firearm",0],["STR_License_Rifle",0]]

我的目标是创建一个名为results的数组或字符串(不确定最佳方法),其中许可证的值为1.

例如:结果应类似于:STR_Licenses_Driver, STR_Licenses_Pilot

我目前正在使用PHP版本7和Laravel版本5.5

3 个答案:

答案 0 :(得分:1)

$licenses = [["STR_License_Driver",1],["STR_License_Truck",0],["STR_License_Pilot",1],["STR_License_Firearm",0],["STR_License_Rifle",0]];

映射第二项等于1的已过滤数组,以获取许可证名称。

$filterVal = 1;
$licenseNames = array_map(
                  function ($item) { return $item[0]; }, 
                  array_filter(
                    $licenses, 
                    function ($item) use ($filterVal) { return $item[1] === $filterVal; }
                  )
                );

然后内嵌许可证名称数组,以通过胶水串加入。

echo implode($licenseNames, ', ');

答案 1 :(得分:1)

我记得你的数据结构上的Python。

试试我的解决方案: https://3v4l.org/nrfqZ

答案 2 :(得分:1)

JSON解码$ this->许可证并执行循环。

整码

$licenses  = $this->licenses;//This is your posted array string

$result = json_decode($licenses);
$licenses_with_1 = array();
foreach($result as $i){
   foreach($i as $key => $value){
       if($value == 1){
            $licenses_with_1[] = $i[0];
       }
   }
}
print_r($licenses_with_1);

<强>结果

Array ( [0] => STR_License_Driver [1] => STR_License_Pilot )