查看: 1520|回复: 3
|
[php]Multidimensional array_splice
[复制链接]
|
|
请问谁会这个可以教教我吗? <?phperror_reporting(E_ALL^E_NOTICE);$a=array(array("id"=>1), array("id"=>2), array("id"=>3), array("id"=>4), array("id"=>5) ); //$test=array("peter","messy","rebica","selina","hebe"); $c=count($a); //array_push($a,array("id"=>6));array_splice($a,$c,0,array('id'=>6));$b=count($a);array_splice($a,$b,0,array('id'=>7)); print_r($a); ?>
答案要像这样的
Array ( [0] => Array ( [id] => 1 ) [1] => Array ( [id] => 2 ) [2] => Array ( [id] => 3 ) [3] => Array ( [id] => 4 ) [4] => Array ( [id] => 5 ) [5]=>Array( [id]=> 6) [6] =>Array( [id]=> 7 )
|
|
|
|
|
|
|
|
发表于 17-7-2014 10:46 AM
|
显示全部楼层
完整的code 大概是这样-
- error_reporting(E_ALL^E_NOTICE);
- $a=array(
- array("id"=>1),
- array("id"=>2),
- array("id"=>3),
- array("id"=>4),
- array("id"=>5)
- );
- $test=array("peter","messy","rebica","selina","hebe");
- $c=count($a);
- array_push($a,array("id"=>6));
- array_splice($a,$c,1,array(array('id'=>6)));
- $b=count($a);
- array_splice($a,$b,0,array(array('id'=>7)));
- print_r($a);
复制代码 简单的解释是 array_splice是将阵列指定的项目撤换成你提供的项目
$a的阵列原本是 2[Col]X5[Row]
array_push那个正确的把一个 2X1的阵列加到最底下
但是你的array_splice撤换的项目被误当作 1X1的阵列, 所以执行出来的结果会是 [6]=>6, [7]=>7
在array_splice那边撤换进去的阵列多包多一个array的函数,让它认得 2X1的阵列
执行结果就会像你要的那样
另外array_splice的第三个变数,如果是0的话就不会替代任何项目,而1的话会替代掉“1”个项目,
push进去后, splice 替掉你原本Push进去的
|
|
|
|
|
|
|
|

楼主 |
发表于 17-7-2014 01:38 PM
|
显示全部楼层
那如果我要input 用 array_push 比较好还是array_splice比较好?
我的input 会是这样:
Option 1. array_splice($_SESSION['product'],count($_SESSION['product']),0,array(array("bcode"=>$bcode,"qty"=>$qty)));
Option 2. array_push(($_SESSION['product'],array(array("bcode"=>$bcode,"qty"=>$qty))); |
|
|
|
|
|
|
|
发表于 17-7-2014 02:17 PM
|
显示全部楼层
如果你这边问的这题跟之前的有连贯的话, 每次增加“1”笔资料而已,就用- $_SESSION['product'][]=array("bcode"=>$bcode,"qty"=>$qty);
复制代码 这样会比较好, php 的array_push的说明文件那边有注明:- Note: If you use array_push() to add one element to the array it's better to use $array[] = because in that way there is no overhead of calling a function.
复制代码 祝安。 |
|
|
|
|
|
|
| |
本周最热论坛帖子
|