Php 基于键名将数组行分隔为其他数组
我有一个这样的数组Php 基于键名将数组行分隔为其他数组,php,arrays,foreach,Php,Arrays,Foreach,我有一个这样的数组 $rows = array( array( 'fruit.name' => 'Apple', 'fruit.colour' => 'Red', 'fruit.weight' => '0.1', 'vegetable.name' => 'Carrot', 'vegetable.colour' => 'Orange', 'vegetable.wei
$rows = array(
array(
'fruit.name' => 'Apple',
'fruit.colour' => 'Red',
'fruit.weight' => '0.1',
'vegetable.name' => 'Carrot',
'vegetable.colour' => 'Orange',
'vegetable.weight' => '0.05'
),
array(
'fruit.name' => 'Banana',
'fruit.colour' => 'Yellow',
'fruit.weight' => '0.7',
'vegetable.name' => 'Potato',
'vegetable.colour' => 'Brown',
'vegetable.weight' => '0.6'
)
);
我希望能够根据键名的第一部分,将数组排序为另外两个数组,称为“水果”和“蔬菜”,一直到小数点。使用这个数组,我应该在每个水果和蔬菜数组中有2行
我有这个代码,但它不起作用,我看不出我做错了什么
$fruits = array();
$vegetables = array();
foreach($rows as $row)
{
foreach($row as $key => $value)
{
if('fruit' == substr($key, 0, strpos($key, '.')))
{
$fruits[$key] = $row;
}
else
{
$vegetables[$key] = $row;
}
}
}
echo "<pre>"; var_dump($fruits); echo "</pre>";
如果需要任何帮助,请将数组分成两个数组,每个数组包含水果或蔬菜。这似乎有效:
$fruits[$key] = $value;
-AND-
$vegetables[$key] = $value;
(请忽略我将其中一个变量称为$vegs)
希望这有帮助 我没有运行代码,但看起来您需要:
你期望的最终结果是什么?正是我想要的。非常感谢。
$rows = array(
array(
'fruit.name' => 'Apple',
'fruit.colour' => 'Red',
'fruit.weight' => '0.1',
'vegetable.name' => 'Carrot',
'vegetable.colour' => 'Orange',
'vegetable.weight' => '0.05'
),
array(
'fruit.name' => 'Banana',
'fruit.colour' => 'Yellow',
'fruit.weight' => '0.7',
'vegetable.name' => 'Potato',
'vegetable.colour' => 'Brown',
'vegetable.weight' => '0.6'
)
);
$fruits = $vegs = array();
foreach ($rows as $arrays) {
$fruit = array();
$veg = array();
foreach ($arrays as $key => $val) {
$index = substr($key, strpos($key, ".") + 1);
if('fruit' == substr($key, 0, strpos($key, '.'))){
$fruit[$index] = $val;
} else {
$veg[$index] = $val;
}
}
$fruits[] = $fruit;
$vegs[] = $veg;
}
var_dump($fruits, $vegs);
$fruits[$key] = $value;
-AND-
$vegetables[$key] = $value;