php array_combine函数不能正常工作?

时间:2014-03-19 05:25:35

标签: php arrays

这是我的代码

        $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 );

我怎样才能得到我期待的结果。提前谢谢。

5 个答案:

答案 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'];
        }