在PHP中连接两个连续的foreach迭代?

时间:2016-04-19 18:09:34

标签: php arrays loops foreach

我有$result变量。它具有以下结构: enter image description here

我正在尝试使用这样的结构:masculine => 1feminine => 2

我被困在这里:

foreach ($result as $row)
{
   foreach ($row as $column => $value)
   {
       echo $column . ' with order ' . $value . '<br/>';
   }
}

我的尝试输出是:

enter image description here

我尝试使用next()函数并将其应用于$row变量,但是对于每次迭代,我得到了1(2) => false

我非常感谢你的帮助!

3 个答案:

答案 0 :(得分:3)

这可能有效:

$new_array = []; // Not sure if you needed this piece but I've included it :)

foreach ($result as $row)
{
   echo $row['gender_value'].' => '.$row['gender_preferred_order'].'<br>';

   $new_array[$row['gender_value']] = $row['gender_preferred_order'];
}

print_r($new_array);

我强烈建议您熟悉print_r()

答案 1 :(得分:2)

您可以使用PHP内置函数 array_column 来完成这项工作。

  

array_column - 返回输入数组中单个列的值

     

(PHP 5&gt; = 5.5.0,PHP 7)

     

语法 -

     

array array_column(array $ input,mixed $ column_key [,mixed $ index_key = null])

脚本就像这样 -

<?php

$result = array(
    array(
        'gender_value' => 'masculine',
        'gender_preffered_order' => 1
    ),
    array(
        'gender_value' => 'feminine',
        'gender_preffered_order' => 2
    ),
);

$filtered = array_column($result, 'gender_preffered_order', 'gender_value');
print_r($filtered);

有关详情,请参阅链接 - http://php.net/manual/en/function.array-column.php

对于PHP&lt; 5.5

<?php

if (!function_exists('array_column')) {
    function array_column($input, $column_key, $index_key = null) {
        $arr = array_map(function($d) use ($column_key, $index_key) {
            if (!isset($d[$column_key])) {
                return null;
            }
            if ($index_key !== null) {
                return array($d[$index_key] => $d[$column_key]);
            }
            return $d[$column_key];
        }, $input);

        if ($index_key !== null) {
            $tmp = array();
            foreach ($arr as $ar) {
                $tmp[key($ar)] = current($ar);
            }
            $arr = $tmp;
        }
        return $arr;
    }
}
?>

希望这会对你有所帮助!!

答案 2 :(得分:1)

我希望我理解你的问题,但根据你想要的结果,我创造了这个:

$result = array(
    array(
        'gender_value' => 'masculine',
        'gender_preferred_order' => 1,
    ),
    array(
        'gender_value' => 'feminine',
        'gender_preferred_order' => 2,
    )
);

$set = array();

foreach($result as $gender) {
    $set[] = array($gender["gender_value"] => $gender["gender_preferred_order"]);
}

var_dump($set); // [['masculine' => 1],['feminine' => 2]]