佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1520|回复: 3

[php]Multidimensional array_splice

[复制链接]
发表于 16-7-2014 10:42 PM | 显示全部楼层 |阅读模式
  • 请问谁会这个可以教教我吗?
  • <?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 )














回复

使用道具 举报


ADVERTISEMENT

发表于 17-7-2014 10:46 AM | 显示全部楼层
完整的code 大概是这样
  1.        
  2.         error_reporting(E_ALL^E_NOTICE);
  3.         $a=array(
  4.                         array("id"=>1),
  5.                         array("id"=>2),
  6.                         array("id"=>3),
  7.                         array("id"=>4),
  8.                         array("id"=>5)
  9.         );
  10.         $test=array("peter","messy","rebica","selina","hebe");       
  11.         $c=count($a);
  12.         array_push($a,array("id"=>6));
  13.         array_splice($a,$c,1,array(array('id'=>6)));
  14.         $b=count($a);
  15.         array_splice($a,$b,0,array(array('id'=>7)));
  16.         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”笔资料而已,就用
  1. $_SESSION['product'][]=array("bcode"=>$bcode,"qty"=>$qty);
复制代码
这样会比较好, php 的array_push的说明文件那边有注明:
  1. 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.
复制代码
祝安。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 28-8-2025 03:50 AM , Processed in 0.108868 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表