Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 基于键名将数组行分隔为其他数组_Php_Arrays_Foreach - Fatal编程技术网

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;