匹配数组比按索引插入父数组


Matching Array than insert parent array by Index

你好,任何人都可以帮我,我有 2 个参数数组比我想要匹配,如果索引数组 1 &&索引数组 2,值索引数组 2 推送到索引数组 1你能给我提示或技巧吗?

Array
(
   [0] => 4151
   [1] => 4952 
)

 Array
 (
[0] => Array
    (
        [0] => BandaAceh
        [1] => Padang
        [2] => Jambi
        [3] => Palangkaraya
    )
[1] => Array
    (
        [0] => BandaAceh
        [1] => Jambi
        [2] => Padang
        [3] => Palangkaraya
    )
 )

比我希望可以使用这样的:

Array
(
[0] => Array
    (
        [0] => BandaAceh
        [1] => Padang
        [2] => Jambi
        [3] => Palangkaraya
        [4] => 4151
    )
[1] => Array
    (
        [0] => BandaAceh
        [1] => Jambi
        [2] => Padang
        [3] => Palangkaraya
        [4] => 4952
      )
 )

到目前为止我的代码喜欢

 public function logRute($ruteoptimal , $simpanrute , $i)
{
    echo "<pre>".print_r($ruteoptimal,true)."</pre>";
    echo "<pre>".print_r($simpanrute,true)."</pre>";
    $new=array();
    foreach ($ruteoptimal as $ruteoptimalkey => $ruteoptimalvalue)
    {
        foreach ($ruteoptimalvalue as $num_key => $content)
        {
            $$ruteoptimal[$ruteoptimalkey][$num_key] = 'another string';
        }
    }

鲁特最优是

Array
(
[0] => 4151
[1] => 4952
)

辛潘鲁特是

 Array
 (
 [0] => Array
    (
        [0] => BandaAceh
        [1] => Padang
        [2] => Jambi
        [3] => Palangkaraya
    )
  [1] => Array
    (
        [0] => BandaAceh
        [1] => Jambi
        [2] => Padang
        [3] => Palangkaraya
    )
  )

简单:

  • 首先遍历第一个数组
  • 然后检查该键是否存在于其他数组中
  • 如果它们键存在,则推送值
  • 您的最终数组$arr2现在应该具有所需的值

.PHP:

$arr1 = array(4151, 4952);
$arr2 = array(
    array("BandaAce", "Panda", "Jambi", "Pala"),
    array("BandaAce", "Panda", "Jambi", "Pala"),
);
foreach ($arr1 as $k => $v) {
    if (isset($arr2[$k])) {
        $arr2[$k][] = $v;
    }
}
您可以使用

array_map http://php.net/manual/en/function.array-map.php。

$data = array(
    4151,
    4952
);
$array = array(
    array(
        "Banda",
        "Padang",
        "Jambi",
        "Palan"
    ),
    array(
        "Banda",
        "Jambi",
        "Padang",
        "Pala"
    ),
);

function combine ($array, $data) {
    $array[] = $data;
    return $array;
}
$new = array_map('combine', $array, $data);
var_dump($new);

这应该产生

array(2) {
    [0] =>
        array(5) {
            [0] =>
                string(5) "Banda"
            [1] =>
                string(6) "Padang"
            [2] =>
                string(5) "Jambi"
            [3] =>
                string(5) "Palan"
            [4] =>
                int(4151)
        }
    [1] =>
        array(5) {
             [0] =>
                 string(5) "Banda"
             [1] =>
                 string(5) "Jambi"
             [2] =>
                 string(6) "Padang"
             [3] =>
                 string(4) "Pala"
             [4] =>
                 int(4952)
        }
    }

如果要使用"foreach"和"array_push"而不是array_map:

$data = array(
    4151,
    4952
);
$array = array(
    array(
        "Banda",
        "Padang",
        "Jambi",
        "Palan"
    ),
    array(
        "Banda",
        "Jambi",
        "Padang",
        "Pala"
    ),
);
foreach( $data as $data_key => $data_value )
{
    foreach( $array as $array_key => $array_value )
    {
        if ( $data_key == $array_key )
        {
            array_push( $array[ $array_key ] , $data_value );
            break;
        }
    }   
}
var_dump( $array );