将键附加到现有数组值

时间:2013-12-17 04:23:00

标签: php arrays array-push

我有以下数组并使用array_push&我得不到正确的结果。

阵列:

Array
(
    [0] => 1039
    [1] => 417
    [2] => 418
)

阵列推送:

array_push($array, array("a","b","c"));

结果:

Array
(
    [0] => 1039
    [1] => 417
    [2] => 418
    [3] => Array
    (
        [0] => a
        [1] => b
        [2] => c
    )

)

我希望a,b,c附加值417为例。

可取的结果:

Array
(
    [1039] => 1039
    [417] => Array
    (
        [0] => a
        [1] => b
        [2] => c
    )
    [418] => 418

)

如何做到这一点?

解决方案:

$data = Array (
    0 => 1039,
    1 => 417,
    2 => 418,
 );

foreach( $data as $key => $val ) {
    $new_data[$val] = 0;
}

foreach( $new_data as $k => $v ){
    if( $k == 417 ){
        $new_data[$k] = array( 'p' => 50, 'pp' => 75 );
    }
}
print_r($new_data); 

6 个答案:

答案 0 :(得分:1)

它没有任何意义,但这将完成您在示例中显示的内容:

$array[1] .= print_r(array("a","b","c"), true);

.=执行字符串连接,并将true作为第二个参数传递给print_r,使其返回它将打印的字符串。

结果是$array[1]是一个以417开头的字符串,后跟添加的数组的打印表示。那里没有实际的阵列。我不确定你打算用这个做什么,但它符合你的例子。

答案 1 :(得分:0)

在这种情况下不要使用数组推送(我可能会错过你的问题)

$arr = array(1,2,3);
$arr[1] = array('a','b','c');
//would output your above example.

答案 2 :(得分:0)

就像这样做&一切都应该按预期工作:

array_push($array, "a", "b", "c");

array_push手册页最能说明:

$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);

但是如果您要添加的值已经在数组中,那么可能使用array_merge代替:

array_merge($array, array("a","b","c"));

答案 3 :(得分:0)

我运行的PHP代码:

$arr = array(0=>1039,1=>417,2=>418);
array_push($arr, array("a","b","c"));
var_dump($arr);

和var_dump($ arr)

array(4) { [0]=> int(1039) [1]=> int(417) [2]=> int(418) [3]=> array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" } } 

答案 4 :(得分:0)

使用array_splice

array_splice($your_arrray, 1, 0, array("a","b","c"));

答案 5 :(得分:0)

使用循环显示新的数组数据

 $data = Array (
      0 => 1039,
      1 => 417,
      2 => 418,
      );

 foreach( $data as $key => $val ) {
     if ( $val == 417 ) {
         $val = array( 'a','b','c' );
     }

     $new_data = array( $key => $val );
     foreach( $new_data as $key2 => $val2 ) {
         if ( is_array( $val2 ) ) {
             $val2 = array( 417 => $val );
         }
         $new_data1 = array( $key2 => $val2 );

    print_r($new_data1);
    }
}