2009-10-13 3 views
1

어떻게하면 많은 복잡한 코드없이 다음을 수행 할 수 있습니까?원본 키를 유지하면서 PHP에서 배열 분해

  1. PHP에서 배열의 각 값을 폭발
  2. 이 두 번째 부분 (내가 거기있을 것입니다 알고 원래 키를 유지
  3. 폐기에게 첫 번째 부분 (I 일종의이 단계를 수행하는 방법을 알고) 만 두 부분)이으로

, 나는 다음과 같은 의미 :

$array[1]=blue,green 
$array[2]=yellow,red 

된다
$array[1]=green //it exploded [1] into blue and green and discarded blue 
$array[2]=red // it exploded [2] into yellow and red and discarded yellow 

방금 ​​깨달았습니다. for ... for each loop? 그렇다면 답장을하십시오. 어디서부터 시작해야 할지를 결정하면 코드를 작성할 수 있습니다.

+3

당신은 문자열을 폭발하지 배열 – nickf

+2

예를 들어 어떤 종류의를 제공하지 않습니다. – MitMaro

답변

4

이 :

$array[1] = "blue,green"; 
$array[2] = "yellow,red"; 

여기 그것을 수행하는 방법 :

foreach ($array as $key => $value) { 
    $temp = explode(",", $value, 2); // makes sure there's only 2 parts 
    $array[$key] = $temp[1]; 
} 

또 다른를 그런 식으로 할 수있는 방법은 다음과 같습니다.

foreach ($array as $key => $value) { 
    $array[$key] = preg_replace("/^.+?,$/", "", $value); 
} 

... 또는 당신이 시작 substr()의 조합 strpos()

+0

또는'list (, $ array [$ key]) = 폭발 (',', $ 값, 2); – mpen

1

이 시도 : 비록

$arr = explode(',','a,b,c'); 
unset($arr[0]); 

, 정말, 당신이 이해가되지 않습니다 요구하는지. 두 부분이 알고, 당신은 아마이 가까이 뭔가를 원하는 : 주어진

list(,$what_i_want) = explode('|','A|B',2); 
+0

이 대답은 편집 후에 너무 의미가 없습니다. \ – mpen

0
foreach ($array as $k => &$v) { 
    $v = (array) explode(',', $v); 
    $v = (!empty($v[1])) ? $v[1] : $v[0]; 
} 
+0

나는'array_shift'도 제안하려고했으나 의사가 키 번호를 다시 매길 것이라고 (숫자 인 경우) 말합니다. Exploding은 숫자 키를 생성합니다. – mpen

0

배열 사용

function reduction($values) 
{ 
    // Assumes the last part is what you want (regardless of how many you have.) 
    return array_pop(explode(",", $values)); 
} 

$prime = array_map('reduction', $array); 

참고 : 이것은을 작성하고, 코딩의

$array[1] = "blue,green"; 
$array[2] = "yellow,red"; 

한 가지 방법을 $array과 다른 배열입니다.

따라서 $array == $prime하지만 는 아무 의미 차종을 설명하지 않습니다 무엇$array === $prime