0

異なるキーと値を含む 2 つの配列があります。ただし、一部のキーは、1 つの配列 (つまり、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)

そしてこれが2つ目

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 の Featured_pic と配列 #2 の accommodation_roomphoto です。これらすべての数字を 1 つの配列にまとめる必要があります (キーはもう必要ありません。必要なのは、これらのキーから得られる一連の数字だけです。上記の例では、740、741、742、456、434 です)。 :

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

結果の配列は上記の例のようになります (順序は重要ではありません)。

ありがとうございました

4

3 に答える 3

0

array_mergeとを使用したワンライナーarray_map。2つの配列が$aとであると仮定します$b

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

に渡される無名関数にはPHP>=5.3が必要array_mapです。

于 2012-01-12T16:51:56.627 に答える
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、配列の 2 番目のセットのキーも数値であるため、上記の配列から必要な結果が得られません。

于 2012-01-12T16:43:44.637 に答える