数组合PHP中的问题

时间:2011-04-04 13:17:02

标签: php arrays

HI,

我有两个阵列。

var_dump($tbDateArr);
var_dump($tbTitleArr);

输出:

array
  0 => 
    object(stdClass)[16]
      public 'eventDate' => string '5' (length=1)
  1 => 
    object(stdClass)[17]
      public 'eventDate' => string '16' (length=2)
array
  0 => 
    object(stdClass)[18]
      public 'eventTitle' => string 'mar' (length=10)
  1 => 
    object(stdClass)[19]
      public 'eventTitle' => string 'tri' (length=10)

BTW,我打印出来,

print_r($tbDateArr);
echo '<br>';
print_r($tbTitleArr);
Array ( [0] => stdClass Object ( [eventDate] => 5 ) [1] => stdClass Object ( [eventDate] => 16 ) ) 
Array ( [0] => stdClass Object ( [eventTitle] => mar ) [1] => stdClass Object ( [eventTitle] => tri ) )

我试图将它们组合起来,

$dataArr = array_combine($tbDateArr, $tbTitleArr);

我只想要简单的结果,

Array
(
    [5]  => mar
    [16]    => tri

)

有什么不对吗?感谢您的帮助。

[使用array_merge更新]

array
  0 => 
    object(stdClass)[16]
      public 'eventDate' => string '5' (length=1)
  1 => 
    object(stdClass)[17]
      public 'eventDate' => string '16' (length=2)
  2 => 
    object(stdClass)[18]
      public 'eventTitle' => string 'fuzhou mar' (length=10)
  3 => 
    object(stdClass)[19]
      public 'eventTitle' => string 'weihai tri' (length=10)

4 个答案:

答案 0 :(得分:3)

假设$tbDateArr$tbTitleArr条目只有一个属性(分别为eventDateeventTitle),您可以这样做:

$array = array_combine(
    array_map('current', $tbDateArr),
    array_map('current', $tbTitleArr)
);

如果他们拥有(或可以拥有)多个属性,那么最好使用优质的foreach,假设他们有匹配的密钥(如果他们没有,只需array_values他们事先):

$array = array();
foreach ($tbDateArr as $key => $value) {
    $array[$value] = $tbTableArr[$key];
}

答案 1 :(得分:1)

修改 这工作

$arr1  = array(
    "5",
    "16",
);

$arr2  = array(
    "mar",
    "tri",
);

$result = array_combine($arr1, $arr2);
print_r($result);

答案 2 :(得分:1)

您不能直接组合数组,因为您需要的值存储为对象中的属性 - 您必须将这些值拉出并使用它们:

$keys   = array_map('getEventDate', $tbDateArr);
$values = array_map('getEventDate', $tbTitleArr);

print_r(array_combine($keys, $values));

function getEventDate($o) {
    return $o->eventDate;
}

答案 3 :(得分:0)

您正在尝试组合包含对象的数组。 array_combine使用其第一个参数作为键的第二个参数。