将键附加到现有数组值


Append keys to existing array value

我有以下数组,并使用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); 

这实际上没有意义,但这将实现您在示例中显示的功能:

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

.=进行字符串串联,将true作为第二个参数传递给print_r会使其返回本应打印的字符串。

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

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

 $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);
    }
}

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

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

就这样做&所有操作都应按预期进行:

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"));

我正在运行的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" } } 

使用array_splice

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