我正在尝试使用这样的结构:masculine => 1
,feminine => 2
。
我被困在这里:
foreach ($result as $row)
{
foreach ($row as $column => $value)
{
echo $column . ' with order ' . $value . '<br/>';
}
}
我的尝试输出是:
我尝试使用next()
函数并将其应用于$row
变量,但是对于每次迭代,我得到了1(2) => false
。
我非常感谢你的帮助!
答案 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]]