拆分PHP数组按值 [英] split php array by value
本文介绍了拆分PHP数组按值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这样的阵列
阵列
0 =>
排列 PRODID =>串'2'(长度= 1)
'数量'=> INT 2
'价格'=>字符串'100.00'(长度= 6)
SID =>字符串'13'(长度= 2)
2 =>
排列 PRODID =>字符串'3'(长度= 1)
'数量'=> INT 1
'价格'=>字符串'380.00'(长度= 6)
SID =>字符串'13'(长度= 2)
1 =>
排列 PRODID =>串8(长度= 1)
'数量'=> INT 1
'价格'=>字符串'300.00'(长度= 6)
SID =>字符串'24'(长度= 2)
我怎样才能把它分解为多维数组,其中价值SID比赛像这样。
阵列
0 =>
排列 0 =>
排列
PRODID =>串'2'(长度= 1)
'数量'=> INT 2
'价格'=>字符串'100.00'(长度= 6)
SID =>字符串'13'(长度= 2)
1 =>
排列
PRODID =>串'2'(长度= 1)
'数量'=> INT 2
'价格'=>字符串'100.00'(长度= 6)
SID =>字符串'13'(长度= 2) 1 =>
排列 0 =>
排列
PRODID =>字符串'7'(长度= 1)
'数量'=> INT 1
'价格'=>字符串'200.00'(长度= 6)
SID =>字符串'15'(长度= 2)
解决方案
// $输出中数组由SID价值被索引
$输出=阵列();//迭代主阵列上,并创建一个新的子阵,如果
//它不存在,或添加到它,如果它。
的foreach($输入作为subarr $){
如果(!使用isset($输出[$ subarr ['SID']){
//新数组希德索引
$输出[$ subarr ['SID'] =阵列();
}
//追加整个数组
$输出[$ subarr ['SID'] [] = $ subarr;
}
请注意:这会产生比你的描述略有不同的输出,因为它使用了 SID
作为数组键,而不是仅仅从0索引它们:
阵列
//注意关键的区别...
// SID == 13
13 =>
排列
0 =>
排列
PRODID =>串'2'(长度= 1)
'数量'=> INT 2
'价格'=>字符串'100.00'(长度= 6)
SID =>字符串'13'(长度= 2)
1 =>
排列
PRODID =>串'2'(长度= 1)
'数量'=> INT 2
'价格'=>字符串'100.00'(长度= 6)
SID =>字符串'13'(长度= 2)
// SID == 15
15 =>
排列 0 =>
排列
PRODID =>字符串'7'(长度= 1)
'数量'=> INT 1
'价格'=>字符串'200.00'(长度= 6)
SID =>字符串'15'(长度= 2)
I have this array
array
0 =>
array
'prodid' => string '2' (length=1)
'qty' => int 2
'price' => string '100.00' (length=6)
'sid' => string '13' (length=2)
2 =>
array
'prodid' => string '3' (length=1)
'qty' => int 1
'price' => string '380.00' (length=6)
'sid' => string '13' (length=2)
1 =>
array
'prodid' => string '8' (length=1)
'qty' => int 1
'price' => string '300.00' (length=6)
'sid' => string '24' (length=2)
How can i split it in to a multi dimentional array where the values 'sid' match like so.
array
0 =>
array
0 =>
array
'prodid' => string '2' (length=1)
'qty' => int 2
'price' => string '100.00' (length=6)
'sid' => string '13' (length=2)
1 =>
array
'prodid' => string '2' (length=1)
'qty' => int 2
'price' => string '100.00' (length=6)
'sid' => string '13' (length=2)
1 =>
array
0 =>
array
'prodid' => string '7' (length=1)
'qty' => int 1
'price' => string '200.00' (length=6)
'sid' => string '15' (length=2)
解决方案
// $ouput array will be indexed by the 'sid' value
$output = array();
// Iterate over the main array and create a new subarray if
// it doesn't already exist, or add to it if it does.
foreach($input as $subarr) {
if (!isset($output[$subarr['sid']]) {
// New array indexed by sid
$output[$subarr['sid']] = array();
}
// Append the whole array
$output[$subarr['sid']][] = $subarr;
}
Note: this produces slightly different output than you described, in that it uses the sid
as array keys rather than just indexing them from 0:
array
// Note key difference...
// sid == 13
13 =>
array
0 =>
array
'prodid' => string '2' (length=1)
'qty' => int 2
'price' => string '100.00' (length=6)
'sid' => string '13' (length=2)
1 =>
array
'prodid' => string '2' (length=1)
'qty' => int 2
'price' => string '100.00' (length=6)
'sid' => string '13' (length=2)
// sid == 15
15 =>
array
0 =>
array
'prodid' => string '7' (length=1)
'qty' => int 1
'price' => string '200.00' (length=6)
'sid' => string '15' (length=2)
这篇关于拆分PHP数组按值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文