2012-04-18 5 views
0

막혔습니다. 나는 합쳐서 빈 값을 무시하고 문자열을 반환하는 2 개의 배열을 가지고있다. 예를 들면 :빈 값을 무시하고 배열을 결합하는 PHP

$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시

사전에 감사 ...

+0

시도하지 않은 경우 array_filter()를 사용할 수 있습니다. –

+0

빈 부분을 없애기 위해 array_keys/array_values ​​함수를 사용해 보셨습니까? – Hajo

답변

2
$periods = array(); 
foreach (array_combine(array_filter($Array1), array_filter($Array2)) as $day => $hour) { 
    $periods[] = $day . ' ' . $hour; 
} 
echo implode(', ', $periods); 
+0

매우 깨끗합니다. 시원한. 그런 생각을 해보고 싶다면 ... – tim

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

+0

null 항목을 제거하는 array_filter()는 내가 찾고있는 항목이었다. 나머지 코드는 정상적으로 작동합니다. 감사! – tim

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

오류가 발생하면 알려주세요.

편집 : 예제 배열을 예제에서 나열하는 대신 실제 배열로 바꿉니다.

+0

그래, 나도 알아, 나는 그의 예제에서 그의 배열을 당기고 있었다. –

+0

내 foreach()의 array_push()도 효과가 있었을 것입니다 ... – tim

관련 문제