Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/238.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 - Fatal编程技术网

PHP数组组合,其中第二个值与保持顺序的条件匹配

PHP数组组合,其中第二个值与保持顺序的条件匹配,php,arrays,Php,Arrays,第一阵列 [0] => Array ( [name] => Car [selected] => 1 ) [1] => Array ( [name] => Boat [selected] => 1 ) [2] => Array ( [name] => Bike ) [3] => Array (

第一阵列

[0] => Array
    (
        [name] => Car
        [selected] => 1
    )

[1] => Array
    (
        [name] => Boat
        [selected] => 1
    )

[2] => Array
    (
        [name] => Bike

    )

[3] => Array
    (
        [name] => Tank
    )

[4] => Array
    (
        [name] => Aircraft
    )
第二个阵列:

 [0] => Array
    (
        [name] => Boat
        [code] => PLA


    )

[1] => Array
    (
        [name] => Car
        [code] => GTO


    )
所以我需要的是创建一个包含第一个数组的所有值的新数组,但是“选定”项的顺序必须与第二个数组的顺序一致

所需阵列:

[0] => Array
        (
            [name] => Boat
            [selected] => 1
        )

    [1] => Array
        (
            [name] => Car
            [selected] => 1
        )

    [2] => Array
        (
            [name] => Boat

        )

    [3] => Array
        (
            [name] => Tank
        )

    [4] => Array
        (
            [name] => Aircraft
        )

让我直截了当地回答你的问题:

您的目标是确保“第一个”数组中的选定项以与“第二个”数组相同的方式进行排序。那么您想要相同的数组值,以不同的顺序,并且该顺序是在“second”数组中指定的顺序


试试这个,我不能说我为它感到骄傲,但它可能会满足你的需要。此代码假定第一个和第二个数组都有相应的名称字段。我尚未对此进行广泛测试,但如果您需要,请随时使用。

这为[selected]创建了一个新的值,因此[0][name]1[selected]在我的道路上帮助了我。谢谢谢谢,我对上面的答案进行了调整,使之生效,但这看起来更好。这应该是一个评论,因为它不是一个答案
foreach($second as $k => $v) if(isset($v['selected')) $selected[$v['name']] = $v;
foreach($first as $k => $v){
   $Desired[]['name'] = $v['name'];
   if(isset($selected[$v['name']])) $Desired[]['selected'] = 1;
}
$desiredArray = array();
$checkArray = array();
$arrayToAdd =array();
foreach ($secondArray as $item)
{
    foreach($firstArray as $item2)
    {
        if($item2['name'] == $item['name'] && $item2['selected'])
        {
            $n = count($desiredArray);
            $desiredArray[$n]['name'] = $item['name'];
            $desiredArray[$n]['selected'] = 1;
            $checkArray[] = $item['name'];
        }               
    }
}
foreach($firstArray as $item)
{
    if(!in_array($item['name'], $checkArray))
    {
        $desiredArray[]['name'] = $item['name'];
    }
}