0

ハマった。空の値を無視して結合し、文字列を返したい 2 つの配列があります。そのような:

$Array1 ( [0] => [1] => Monday [2] => Wednesday [3] => Friday [4] => Sunday ) 
$Array2 ( [0] => [1] => 8am [2] => [3] => 10am [4] => [5] => 2pm [6] => [7] => 4pm ) 

戻る:

月曜午前8時、水曜午前10時、金曜午後2時、日曜午後4時

前もって感謝します...

4

3 に答える 3

2

出力をどの形式にするかは完全には明確ではありませんが、使用することarray_filter()が最初のステップです。

$a1 = array( null, 'Monday', 'Wednesday', 'Friday', 'Sunday' );
$a2 = array( null, '8am', null, '10am', null, '2pm', null, '4pm' );

$a1 = array_filter($a1);
$a2 = array_filter($a2);

これにより、null 全体が削除されます。その後、 を使用foreachして出力を作成できます。配列の配列の場合:

$out = array();
foreach ($a1 as $e) $out[] = array($e, array_shift($a2));

文字列の配列の場合:

$out = array();
foreach ($a1 as $e) $out[] = $e.' '.array_shift($a2);

両方の出力タイプを示すデモ: http://codepad.org/ITZJH4RL

于 2012-04-18T17:49:06.487 に答える
2
$periods = array();
foreach (array_combine(array_filter($Array1), array_filter($Array2)) as $day => $hour) {
  $periods[] = $day . ' ' . $hour;
}
echo implode(', ', $periods);
于 2012-04-18T17:42:54.373 に答える
1

それを行うための一種の汚い方法ですが..

//Your arrays:
$Array1 = array( null , Monday, Wednesday, Friday, Sunday) 
$Array2 = array(null, 8am, null, 10am,null, 2pm, null, 4pm)
$Array3 =();
foreach($Array2 as $key=>$val):
    if($val != ''):
        array_push($Array3, $val);
    endif;
endforeach;

// This assumes you have the same number of values in each array
foreach( $Array1 as $key=>$val):
   $Array1[$key] = $Array1[$key] . " " . $Array3[$key];
endforeach;

var_dump($Array1);

試してみて、エラーが発生した場合はお知らせください。

編集:例の配列を単に例からリストするのではなく、実際の配列に変えました。

于 2012-04-18T17:50:19.077 に答える