2016-10-06 2 views
0

을 특정 키를 할당합니다 - 나는 둘째 요소에 첫 번째 요소의 인덱스와 dateout로 datein 할당 할다음과 같이 내가 배열을 배열에 요소

$alldatesandtimes = ["2016-10-04 00:00:01","2016-10-04 23:59:59","2016-10-05 00:00:01","2016-10-05 23:59:59","2016-10-06 00:00:01","2016-10-06 23:59:59"] 

. 그런 다음 세 번째 요소의 인덱스로 datein을하고 네 번째 요소에 dateout을 수행하는 식으로 나머지 요소에 계속해서 등등합니다.

그래서 첫 번째 색인은 datein이어야하고 두 번째 색인은 dateout이어야하며 마지막 요소까지 유지해야합니다. 내가 다음 코드를 한

: -

$keys = array(); 
$result = array(); 
for($j=0; $j<((sizeof($alldatesandtimes))/2); $j++) 
{ 
    $keys[] = "datein"; 
    $keys[] = "dateout"; 
}//end for loop 

for($i = 0; $i< sizeof($alldatesandtimes); $i++) 
{ 
    $result[][$keys[$i]] =$alldatesandtimes[$i]; 
} 

는 다음과 같은 배열 반환 -

$result = Array ([0] => Array ([datein] => 2016-10-04 00:00:01) [1] => Array ([dateout] => 2016-10-04 23:59:59) [2] => Array ([datein] => 2016-10-05 00:00:01) [3] => Array ([dateout] => 2016-10-05 23:59:59) [4] => Array ([datein] => 2016-10-06 00:00:01) [5] => Array ([dateout] => 2016-10-06 23:59:59)) 

을하지만 난 친절하게 도와

$result = ['datein' => '2016-10-04 00:00:01', 'dateout' => '2016-10-04 23:59:59', 'datein' => '2016-10-05 00:00:01', ..... 

줄까?

+1

불가능 인덱스가 고유해야 ... 다른 배열에 새 배열을 할당합니다. –

+0

그냥 원래의 배열에 키를 추가하십시오 – nogad

+0

그래서'$ result [] [$ keys [$ i]]'에서 다차원을 원한다고 가정합니다. 그렇지 않으면 @RobertParham 주석을보아야합니다. – AbraCadaver

답변

3

넌 청크 수 그것을 쌍으로하고 키 쌍 값 쌍을 결합 : 당신은 루프 두 ($ I + 2)에 의해 $ 변수 i를 증분으로 배열 할 수

foreach(array_chunk($alldatesandtimes, 2) as $pair) { 
    $result[] = array_combine(['datein', 'dateout'], $pair); 
} 
+0

감사합니다. –

+0

위대한 작품은 단순히 끝내줍니다 :) –

+0

@JamshaidSabir Acceptable으로 표시해도 좋습니다. – AbraCadaver

0

. 이 방법으로 모든 두 번째 요소를 얻을 수 있습니다.

$result[]=array("datein"=>$arr[$i], "dateout" => $arr[$i+1]); 
+0

만약 $ i가 각 루프마다 하나씩 증가한다고 가정하면 enddate는 항상 다음 배열의 시작 날짜가됩니다. –

+0

나는 루프가 $ i ++ 대신에 $ i + 2를 증가시켜야한다고 명시 적으로 언급했다. – Mightee

+0

나는 그것을 보지 못했지만 [루프를 추가했다면 더 쉽고 읽기 쉬울 것이다.] (https : // 3v4l. org/mOKIJ) 답변을 .. –

0
ABRA의 답변으로 거의 공상하지

하지만, 다음과 같이 그 후

$newDates = array(); 
$dateHolder = array(); 
foreach($alldatesandtimes as $k=>$v){ 
    $key = $k%2===0 ? "dateIn" : "dateOut"; 
    $newDates[$key] = $v; 
    if(count($newDates)===2){ 
     $dateHolder[] = $newDates; 
     $newDates = array(); 
    } 
} 
$alldatesandtimes = $dateHolder; 

https://3v4l.org/BCoYd

관련 문제