0

我有两个包含不同键和值的数组。但是,一些键存储字符串(整数),我想将它们混合在一个数组中(即array_merge)。我需要做的就是收集这些整数。

使用 var_dump 数组看起来像这样:

这是第一个

array
    0 => 
        array
           'featured_pic' => string '740' (length=3)
    1 => 
        array
           'featured_pic' => string '741' (length=3)
    2 => 
        array
          'featured_pic' => string '742' (length=3)

这是第二个

array
   0 => 
     array
       'accommodation_roomphoto' => string '456' (length=3)
       'accommodation_roomname' => string 'Single room' (length=11)
       'accommodation_roomsize' => string 'single' (length=6)
       'price_unit' => string '60' (length=2)
       'price_currency' => string 'USD' (length=3)
   1 => 
     array
       'accommodation_roomphoto' => string '434' (length=3)
       'accommodation_roomname' => string 'Double room' (length=11)
       'accommodation_roomsize' => string 'double' (length=6)
       'price_unit' => string '80' (length=2)
       'price_currency' => string 'USD' (length=3)

我真正需要的是来自阵列#1 的特色图片和来自阵列#2 的住宿房间照片。我需要将所有这些数字收集到一个数组中(我不再需要键 - 我需要的是来自这些键的一系列数字,在上面的示例中:740、741、742、456、434) :

array
   0 => '740'
   1 => '741'
   2 => '742'
   3 => '456'
   4 => '434'

结果数组应该类似于上面的示例(顺序不重要)

谢谢

4

3 回答 3

0
$new_array = array();

foreach($array1 as $array) {
    $new_array[] = intval($array['featured_pic']);
}

foreach($array2 as $array) {
    $new_array[] = intval($array['accommodation_roomphoto']);
}

这是我对问题的理解。

我只是对两个数组进行了一次 foreach 并从每个数组中取出所需的日期。

我还使用 intval() 将字符串转换为新数组中的整数。

希望这可以帮助。

于 2012-01-12T16:42:36.923 回答
0

如果你知道你感兴趣的键,这只是一个简单的循环工作:

$result = array();

foreach ($array1 as $item) {
  if (isset($item['featured_pic'])) $result[] = (int) $item['featured_pic'];
}
foreach ($array2 as $item) {
  if (isset($item['accommodation_roomphoto'])) $result[] = (int) $item['accommodation_roomphoto'];
}

print_r($result);

或者,如果您不知道所需的键,此例程将从两个数组中获取存储为字符串的所有数字:

$result = array();

foreach ($array1 as $item) {
  foreach ($item as $sub) {
    if (is_numeric($sub)) $result[] = (int) $sub;
  }
}
foreach ($array2 as $item) {
  foreach ($item as $sub) {
    if (is_numeric($sub)) $result[] = (int) $sub;
  }
}

print_r($result);

...但是这不会给您从上面的数组中获得的结果,因为price_unit第二组数组中的键也是数字的。

于 2012-01-12T16:43:44.637 回答
0

单线使用array_mergearray_map。假设您的两个数组是$aand $b

$result = array_merge(
             array_map(function($el) { return $el['featured_pic']; }, $a),
             array_map(function($el) { return $el['accomodation_roomphoto']; }, $b)
          );

对于传递给array_map.

于 2012-01-12T16:51:56.627 回答