2012-07-25 2 views
0

사용의 PHP의 다음 코드로 폭발 배열 인덱스를 폭발PHP의는

$data="test_1, test_2, test_3"; 
$temp= explode(",",$data); 

내가하고 싶은 것을이

array('0'=>'test_1', '1'=>'test_2', 2='test_3') 

같은 배열 한 후

array('1'=>'test_1', '2'=>'test_2', 3='test_3') 

답변

1

배열을 폭발 얻을 인덱스는 0부터 시작합니다. 배열을 하나부터 시작하고 싶다면 인덱스를 분해하여 다른 배열에 복사 할 수 있습니다 1에서 시작하는 것으로 정의되었지만 그 이유는 무엇입니까?

+0

이 인정하고, 더 나은 자격. 페이지가 부풀어 오르기 만하므로이 답변을 삭제 해보십시오. Downvoted. – mickmackusa

+0

PDO의'bindValue()'매개 변수는 1- 색인으로 만들어 지므로이 방법으로 배열 키를 설정하여 추가 처리없이 모든 bindValue 매개 변수와 값을 반복 설정하는 것이 유용합니다. – mickmackusa

0

당신은

$newArray=array_unshift($temp,' '); 
unset($newArray[0]); 
+0

이것이 올바른 생각입니다. 그러나 Lloyd Watkin은'$ data' 문자열 앞에 여분의 구분 기호가 붙어 있기 때문에 함수가 적습니다. – mickmackusa

0

가 폭발 사용 불가능이 가능 (테스트되지 않은)을 사용할 수 있습니다.

for($i = count($temp) - 1; $i >= 0; $i--) 
    $temp[$i + 1] = $temp[$i]; 
unset($temp[0]); 
+0

귀하의 주요 진술이 정확하지 않습니다. 이 질문을 푸는 가장 좋은 2 단계 방법은'explode()'를 포함하고 있습니다. 그렇게 주장하는 독자들에게 오해하지 않도록 노력하십시오. – mickmackusa

0

당신은 직접 할 수는 없지만 이것이 당신이하는 일을 할 것입니다. r :

$temp=explode(',',',' . $data); 
unset($temp[0]); 
var_dump($temp); 
array(3) { 
    [1]=> 
    string(6) "test_1" 
    [2]=> 
    string(7) " test_2" 
    [3]=> 
    string(7) " test_3" 
} 
+0

코드를 올바르게 포맷하는 법을 배웁니다. – ManseUK

+0

신속하게 복사하여 터미널 –

0

Lloyd Watkin의 대답은 기대되는 결과를 얻기 위해 가장 적은 함수 호출을 만듭니다. 그것은 문자열이 폭발 한 후에 한 줄짜리 줄에 네 가지 기능을 사용하는 ManseUK의 방법에 대한 확실한 답입니다.

  1. 영업 :이 질문은 거의 오년 때문에 사람이 지금 차임 감히 경우

    , 오래된 내가 해결하기 위해 두 가지를

    ... 추가 할 수있는 가치있는 무언가가 있어야한다 및 Lloyd Watkins는 샘플 문자열을 기반으로 explode 메서드에 올바른 구분 기호를 할당하지 못했습니다. 구분 기호 은 쉼표 다음에 공백이있는이어야합니다.

    샘플 입력 :

    $data="test_1, test_2, test_3"; 
    
  2. 아무도 로이드의 두 기능의 접근 방식과 일치하는 한 줄 솔루션을 제공하지 않았다. 여기에서 해당 (Demo)

    $temp=array_slice(explode(", ",", $data"),1,null,true); 
    

    이 두 기능을 하나의 라이너는 콤마를 폭발 전에 공간으로 $data 문자열 앞에 추가. 그런 다음 array_slice은 첫 번째 빈 요소를 무시하고 키 (true)를 유지하면서 두 번째 요소 (1)에서 끝 (null)까지 반환합니다.원하는대로

    출력 : 대답 대 질문에 주석으로

    array(
        1 => 'test_1', 
        2 => 'test_2', 
        3 => 'test_3', 
    ) 
    
+0

@lgt에서 붙여 넣습니다.이 페이지의 다른 답변은 비효율적에서 논증 적으로 다양합니다. 장래의 SO 독자가 혼란 스럽거나 잘못 인도되거나 비효율적 인 코드를 복사/붙여 넣기 할 수 있으므로 허용 된 대답을 광산으로 전환하는 것을 고려하십시오. – mickmackusa