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