数组关系匹配 本帖最后由 lazygc520 于 2013-08-21 14:16:17 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 就是需要$a[x][1]==$b[x][1]吧?还有个空格,不能直接判断呢……先偷懒一下,想想,估计不一会就有别人写出来了 那把原数据再改一下,数组a变成:array(4) { [0]=> array(3) { [0]=> string(13) "SU13080800340" [1]=> string(11) "310F6 1VA5A" [2]=> string(1) "3" } [1]=> array(3) { [0]=> string(13) "SU13080800345" [1]=> string(11) "310F6 1VA5A" [2]=> string(2) "23" } [2]=> array(3) { [0]=> string(13) "SU13080800338" [1]=> string(11) "310F6 1VA5A" [2]=> string(1) "3" } [3]=> array(3) { [0]=> string(13) "SU13080800346" [1]=> string(11) "310F6 1VA5A" [2]=> string(2) "25" }} 让你贴 var_export 的结果,你却偏要贴 var_dump 的结果既然你要为难我们,那就给个示意代码吧$a = array( 'SU13080800340', 'SU13080800345',);$b = array( "CVT121015001", "CVT121015002", "CVT121226001", "CVT121226002", "CVT121226003", "CVT121226005",);foreach($a as $k) $res[$k] = array_splice($b, 0, 3);print_r($res);Array( [SU13080800340] => Array ( [0] => CVT121015001 [1] => CVT121015002 [2] => CVT121226001 ) [SU13080800345] => Array ( [0] => CVT121226002 [1] => CVT121226003 [2] => CVT121226005 )) 额,var_export和var_dump的区别?//数组aarray ( 0 => array ( 0 => 'SU13080800340', 1 => '310F6 1VA5A', 2 => '3', ), 1 => array ( 0 => 'SU13080800345', 1 => '310F6 1VA5A', 2 => '23', ), 2 => array ( 0 => 'SU13080800338', 1 => '310F6 1VA5A', 2 => '3', ), 3 => array ( 0 => 'SU13080800346', 1 => '310F6 1VA5A', 2 => '25', ),//数组barray ( 0 => array ( 0 => 'CVT121015001', 1 => '310F6 1VA5A', ), 1 => array ( 0 => 'CVT121015002', 1 => '310F6 1VA5A', ), 2 => array ( 0 => 'CVT121226001', 1 => '310F6 1VA5A', ), 3 => array ( 0 => 'CVT121226002', 1 => '310F6 1VA5A', ), 4 => array ( 0 => 'CVT121226003', 1 => '310F6 1VA5A', ), 5 => array ( 0 => 'CVT121226005', 1 => '310F6 1VA5A', ), 6 => array ( 0 => 'CVT130530033', 1 => '310F6 1VA5A', ), 7 => array ( 0 => 'CVT130530034', 1 => '310F6 1VA5A', ),) 你没有看到 var_export 的结果是符合 php 的语法的吗? 实际情况中,0,3不是固定的。求解方案,按照4#的var_export的结果。 请问这句是什么意思?foreach($a as $k) $res[$k] = array_splice($b, 0, 3); foreach($a as $k) //遍历数组 $a $res[$k] = array_splice($b, 0, 3); //依次从 $b 中取出前3个元素,并删去 $b 的相应元素你说 3 不是固定的,那么该是多少你没有说如果是 $a[x] 的下标2,那么你的 $b 的数量远远不够 如果$a[$x][2]是每笔的对应数量,那么是不是$b的数量一定要满足?不满足的话是否会报错?能否按一定满足的情况来写个例子? 假设$a数组这样吧://数组aarray ( 0 => array ( 0 => 'SU13080800340', 1 => '310F6 1VA5A', 2 => '3', ), 1 => array ( 0 => 'SU13080800338', 1 => '310F6 1VA5A', 2 => '3', ),这样的话怎么处理? 稍微改下楼上的例子假设$a数组这样吧://数组aarray ( 0 => array ( 0 => 'SU13080800340', 1 => '310F6 1VA5A', 2 => '3', ), 1 => array ( 0 => 'SU13080800338', 1 => '310F6 1VA5A', 2 => '4', ),这样的话怎么处理? 你不是装箱吗?难道允许空箱出库?举例时应尽肯能简化问题,但也不能简化到不合常理$a = array ( 0 => array ( 0 => 'SU13080800340', 1 => '310F6 1VA5A', 2 => '3', ), 1 => array ( 0 => 'SU13080800345', 1 => '310F6 1VA5A', 2 => '23', ), 2 => array ( 0 => 'SU13080800338', 1 => '310F6 1VA5A', 2 => '3', ), 3 => array ( 0 => 'SU13080800346', 1 => '310F6 1VA5A', 2 => '25', ),);//数组b$b = array ( 0 => array ( 0 => 'CVT121015001', 1 => '310F6 1VA5A', ), 1 => array ( 0 => 'CVT121015002', 1 => '310F6 1VA5A', ), 2 => array ( 0 => 'CVT121226001', 1 => '310F6 1VA5A', ), 3 => array ( 0 => 'CVT121226002', 1 => '310F6 1VA5A', ), 4 => array ( 0 => 'CVT121226003', 1 => '310F6 1VA5A', ), 5 => array ( 0 => 'CVT121226005', 1 => '310F6 1VA5A', ), 6 => array ( 0 => 'CVT130530033', 1 => '310F6 1VA5A', ), 7 => array ( 0 => 'CVT130530034', 1 => '310F6 1VA5A', ),);foreach($a as $v) { $t = array(); while($v[2]-- && $b) { if($b[0][1] == $v[1]) { $t[] = $b[0][0]; array_shift($b); } } $res[$v[0]] = $t;}print_r($res);Array( [SU13080800340] => Array ( [0] => CVT121015001 [1] => CVT121015002 [2] => CVT121226001 ) [SU13080800345] => Array ( [0] => CVT121226002 [1] => CVT121226003 [2] => CVT121226005 [3] => CVT130530033 [4] => CVT130530034 ) [SU13080800338] => Array ( ) [SU13080800346] => Array ( )) 求助一个关于php构建测试表单的问题 求助! 按时间段查询问题 请高手帮帮忙 小弟感激不尽 PHP种数据库SELECT 检索前10条数据 求一个URL的正则 急!!!!同一窗口中不同表格之间的连接,如何设置??? 讨论下windows下php操作Mssql,哪种方式效率最高? 求教,为什么会出现这种错误. 大家帮我看下这个哪里错了 谢谢 关于ckeditor无法显示我在数据库读出的内容 各位达人有没有很简单的BLOG源代码 求助啊,php新手,该给自己找点什么做做? 动态生成的PHP图片,下载后无法显示
先偷懒一下,想想,估计不一会就有别人写出来了
[0]=>
array(3) {
[0]=>
string(13) "SU13080800340"
[1]=>
string(11) "310F6 1VA5A"
[2]=>
string(1) "3"
}
[1]=>
array(3) {
[0]=>
string(13) "SU13080800345"
[1]=>
string(11) "310F6 1VA5A"
[2]=>
string(2) "23"
}
[2]=>
array(3) {
[0]=>
string(13) "SU13080800338"
[1]=>
string(11) "310F6 1VA5A"
[2]=>
string(1) "3"
}
[3]=>
array(3) {
[0]=>
string(13) "SU13080800346"
[1]=>
string(11) "310F6 1VA5A"
[2]=>
string(2) "25"
}
}
既然你要为难我们,那就给个示意代码吧$a = array(
'SU13080800340',
'SU13080800345',
);
$b = array(
"CVT121015001",
"CVT121015002",
"CVT121226001",
"CVT121226002",
"CVT121226003",
"CVT121226005",
);
foreach($a as $k) $res[$k] = array_splice($b, 0, 3);
print_r($res);Array
(
[SU13080800340] => Array
(
[0] => CVT121015001
[1] => CVT121015002
[2] => CVT121226001
) [SU13080800345] => Array
(
[0] => CVT121226002
[1] => CVT121226003
[2] => CVT121226005
))
//数组a
array (
0 =>
array (
0 => 'SU13080800340',
1 => '310F6 1VA5A',
2 => '3',
),
1 =>
array (
0 => 'SU13080800345',
1 => '310F6 1VA5A',
2 => '23',
),
2 =>
array (
0 => 'SU13080800338',
1 => '310F6 1VA5A',
2 => '3',
),
3 =>
array (
0 => 'SU13080800346',
1 => '310F6 1VA5A',
2 => '25',
),
//数组b
array (
0 =>
array (
0 => 'CVT121015001',
1 => '310F6 1VA5A',
),
1 =>
array (
0 => 'CVT121015002',
1 => '310F6 1VA5A',
),
2 =>
array (
0 => 'CVT121226001',
1 => '310F6 1VA5A',
),
3 =>
array (
0 => 'CVT121226002',
1 => '310F6 1VA5A',
),
4 =>
array (
0 => 'CVT121226003',
1 => '310F6 1VA5A',
),
5 =>
array (
0 => 'CVT121226005',
1 => '310F6 1VA5A',
),
6 =>
array (
0 => 'CVT130530033',
1 => '310F6 1VA5A',
),
7 =>
array (
0 => 'CVT130530034',
1 => '310F6 1VA5A',
),
)
请问这句是什么意思?
foreach($a as $k) $res[$k] = array_splice($b, 0, 3);
$res[$k] = array_splice($b, 0, 3); //依次从 $b 中取出前3个元素,并删去 $b 的相应元素你说 3 不是固定的,那么该是多少你没有说
如果是 $a[x] 的下标2,那么你的 $b 的数量远远不够
如果$a[$x][2]是每笔的对应数量,那么是不是$b的数量一定要满足?不满足的话是否会报错?能否按一定满足的情况来写个例子?
//数组a
array (
0 =>
array (
0 => 'SU13080800340',
1 => '310F6 1VA5A',
2 => '3',
),
1 =>
array (
0 => 'SU13080800338',
1 => '310F6 1VA5A',
2 => '3',
),这样的话怎么处理?
//数组a
array (
0 =>
array (
0 => 'SU13080800340',
1 => '310F6 1VA5A',
2 => '3',
),
1 =>
array (
0 => 'SU13080800338',
1 => '310F6 1VA5A',
2 => '4',
),这样的话怎么处理?
举例时应尽肯能简化问题,但也不能简化到不合常理
$a = array (
0 =>
array (
0 => 'SU13080800340',
1 => '310F6 1VA5A',
2 => '3',
),
1 =>
array (
0 => 'SU13080800345',
1 => '310F6 1VA5A',
2 => '23',
),
2 =>
array (
0 => 'SU13080800338',
1 => '310F6 1VA5A',
2 => '3',
),
3 =>
array (
0 => 'SU13080800346',
1 => '310F6 1VA5A',
2 => '25',
),
);//数组b
$b = array (
0 =>
array (
0 => 'CVT121015001',
1 => '310F6 1VA5A',
),
1 =>
array (
0 => 'CVT121015002',
1 => '310F6 1VA5A',
),
2 =>
array (
0 => 'CVT121226001',
1 => '310F6 1VA5A',
),
3 =>
array (
0 => 'CVT121226002',
1 => '310F6 1VA5A',
),
4 =>
array (
0 => 'CVT121226003',
1 => '310F6 1VA5A',
),
5 =>
array (
0 => 'CVT121226005',
1 => '310F6 1VA5A',
),
6 =>
array (
0 => 'CVT130530033',
1 => '310F6 1VA5A',
),
7 =>
array (
0 => 'CVT130530034',
1 => '310F6 1VA5A',
),
);foreach($a as $v) {
$t = array();
while($v[2]-- && $b) {
if($b[0][1] == $v[1]) {
$t[] = $b[0][0];
array_shift($b);
}
}
$res[$v[0]] = $t;
}
print_r($res);Array
(
[SU13080800340] => Array
(
[0] => CVT121015001
[1] => CVT121015002
[2] => CVT121226001
) [SU13080800345] => Array
(
[0] => CVT121226002
[1] => CVT121226003
[2] => CVT121226005
[3] => CVT130530033
[4] => CVT130530034
) [SU13080800338] => Array
(
) [SU13080800346] => Array
(
))