这是我的代码
$pro_qty = '';
$se_pro = '';
$pro_id_nn = $this->getDataAll("SELECT session_pro_id,session_pro_qty FROM `jp_session` WHERE session_pro_id IN (".$pro_id.") AND order_status='3'");
foreach($pro_id_nn as $pro)
{
$pro_qty[] = $pro['session_pro_qty'];
$se_pro[] = $pro['session_pro_id'];
}
$proqty = array_combine($pro_qty,$se_pro);
echo '<br>';
print_r($se_pro);
echo '<br>';
print_r($pro_qty);
echo '<br>';
print_r($proqty);
OUTOUT
第一个数组
$se_pro = Array ( [0] => 5 [1] => 1 [2] => 1 ) ;
第二个数组
$pro_qty = Array ( [0] => 24 [1] => 24 [2] => 22 ) ;
最后结合两个数组结果是
$proqty = Array ( [5] => 24 [1] => 22 );
但我期待的结果是
$proqty = Array ( [5] => 24 [1] => 24 [1] => 22 );
我怎样才能得到我期待的结果。提前谢谢。
答案 0 :(得分:2)
您的预期结果无法实现,您无法将一个键(1)映射到两个不同的值(24和22)。也许您应该看一个不同的解决方案,例如&#34; jp_session&#34;包含两个值的类,然后将其存储在列表中。
答案 1 :(得分:0)
试试这个
<?php
$se_pro = Array ( 0 => 5, 1 => 1, 2 => 1 ) ;
$pro_qty = Array ( 0 => 24, 1 => 24, 2 => 22 ) ;
$a=sizeof($se_pro);
for($i=0;$i<$a;$i++)
{
$b=$se_pro[$i];
$c=$pro_qty[$i];
$temp[$b]=$c;
$i++;
}
print_r($temp);
?>
但有一个条件&#39; $ se_pro&#39;值不重复,两个数组都是相同的大小
答案 2 :(得分:0)
in array_combine()
如果两个键相同,则第二个键占优势。
你可以得到像 -
这样的结果Array
(
[24] => Array
(
[0] => 5
[1] => 1
)
[22] => 3
)
答案 3 :(得分:0)
另一种方式可以是
$keys = array ( '24', '24', '22' );
$values = array ( '5', '1', '1' );
$output = array();
$size = sizeof($keys);
for ( $i = 0; $i < $size; $i++ ) {
if ( !isset($output[$keys[$i]]) ) {
$output[$keys[$i]] = array();
}
$output[$keys[$i]][] = $values[$i];
}
这将输出类似 -
Array ( [24] => Array ( [0] => 5 [1] => 1 ) [22] => Array ( [0] => 1 ) )
或者您可以使用
<?php
$keys = array ( '24', '24', '22' );
$values = array ( '5', '1', '1' );
function foo($key, $val) {
return array($key=>$val);
}
$arrResult = array_map('foo', $keys, $values);
print_r($arrResult);
?>
取决于哪种输出更适合您使用。
答案 4 :(得分:0)
简单的解决方案
foreach($pro_id_nn as $pro)
{
$pro_qty[$pro['session_pro_id']][] = $pro['session_pro_qty'];
}