php
  • multidimensional-array
  • explode
  • 2017-12-20 17 views 0 likes 
    0

    "explode"문자열 출력을 배열로 변환하는 방법은 무엇입니까? "explode"의 출력을 문자열에서 배열로 변환

    문자열이 주어지면 :

    $long_string = '("name" => "Able","company" => "Tesla","haircolor" => 
    "brown","name" => "Aaaa","home" => "Kansas","shoe" => 12,)<>("name" => 
    "Bob","company" => "Target","haircolor" => "red","name" => "Bbbb","home" => 
    "Ohio","shoe" => 11.5)' ; 
    

    2 문자열을 포함하는 단일 어레이를 생성 할 분해.

    $multi_strings = explode("<>",$long_string); 
    

    $ multi_strings 2 문자열의 배열입니다 :

    array(2) { 
        [0]=> string(112) "("name" => "Able","company" => "Tesla","haircolor" => 
        "brown","name" => "Aaaa","home" => "Kansas","shoe" => 12,)" 
    
        [1]=> string(110) "("name" => "Bob","company" => "Target","haircolor" => 
    "red","name" => "Bbbb","home" => "Ohio","shoe" => 11.5)" 
    } 
    

    PHP 함수가 있어야한다 보인다 상위 배열 내에 중첩 된 배열로 두 문자열을 변환하려면,하지만 난 수없는 것 그것을 찾으십시오.
    이 작업을 수행하려면 고유 한 함수를 만들어야합니까?

    +0

    어디에서이 문자열을 얻었습니까? –

    +0

    이것은 예입니다. 실제 데이터는 데이터 공급 업체에서 가져 와서 .csv 파일로 작성되었지만 사실은 gargage 문자열이었습니다. 이것을 38 단계로 바꿨습니다. – Dustin

    +0

    구문 분석 CSV 파일은 이미 배열을 제공합니다. –

    답변

    2

    두 번째 매개 변수가 true 인 문자열에 json_decode를 사용하면 출력으로 연관 배열이 생성됩니다.

    $url = "https://api.iextrading.com/1.0/stock/market/batch?symbols=aapl,tsla,ge&types=quote,earnings,stats"; 
    $arr = json_decode(file_get_contents($url), true); 
    Var_dump($arr); 
    

    여기를 참고하십시오;
    페이지에서 문자열을 복사하여 $ str으로 게시했습니다.
    https://3v4l.org/duWrI
    두 단계 만 있으면됩니다.

    +0

    어쨌든 이것은 – fab2s

    +0

    입니다. 이것은 단지 awsome입니다. 고맙습니다! 완벽하게 작동합니다. – Dustin

    1

    긴 문자열은 매우 열악한 배열 저장 맞춤 설정 형식 인 것으로 보입니다. 어레이를 더 효율적으로 저장하려면 json_encode 또는 serialize을 사용하는 것이 훨씬 더 효율적입니다. 당신이 그와 함께 붙어 있다면

    이제, 당신은 는 평가를 사용하지 않고이 작업을 수행 할 수 있습니다 :

    $long_string = '("name" => "Able","company" => "Tesla","haircolor" => 
    "brown","name" => "Aaaa","home" => "Kansas","shoe" => 12,)<>("name" => 
    "Bob","company" => "Target","haircolor" => "red","name" => "Bbbb","home" => 
    "Ohio","shoe" => 11.5)'; 
    $parts = explode('<>', $long_string); 
    eval('$result = array(array' . $parts[0] . ', array' . $parts[1] . ');'); 
    print_r($result); 
    

    은 $ long_string보고 경우에 실행될 수 있습니다으로이 추한 꽤 안전하지 않은 말할 필요가 없습니다 PHP 코드처럼.

    또 다른 안전한 방법은 수동으로 문자열을 구문 분석하고 배열을 구축하는 것입니다. 그러나 그렇게 간단한 코드는 더 많이 필요합니다. 다시 한 번 다른 형식을 사용할 수 있다면 그렇게하십시오.

    +1

    $ part [0] ... $ parts [0]'원하는 strcu를 빌드 할 수 있습니까? '$ parts [0] ... $ parts [1]'이 아닙니까? – Andreas

    +0

    고맙습니다. 감사합니다. – fab2s

    +0

    fab2s - 감사합니다. 그 작품. $ long_string을 사용하여 whach에서 무엇이 나오는지 말해 보겠습니다. 이것은 PHP 매뉴얼의 예제 # 3에있는 코드와 똑같은 구조로되어 있습니다. http://php.net/manual/en/language.types.array.php – Dustin

    0

    이것은 내가 필요한 것을 얻었습니다 : 여기에서 : http://php.net/manual/en/function.explode.php 예 : 다음은 "multi"문자열을 폭발시키는 함수입니다.

    <?php 
    
    $long_string = '"name" => "Able","company" => "Tesla","haircolor" => "brown","name" => "Aaaa","home" => "Kansas","shoe" => 12<>"name" => "Bob","company" => "Target","haircolor" => "red","name" => "Bbbb","home" =>"Ohio","shoe" => 11.5'; 
    
    function multiexplode ($delimiters,$string) { 
        $ary = explode($delimiters[0],$string); 
        array_shift($delimiters); 
        if($delimiters != NULL) { 
         foreach($ary as $key => $val) { 
          $ary[$key] = multiexplode($delimiters, $val); 
         } 
        } 
        return $ary; 
    } 
    
    // Example of use 
    // $string = "1-2-3|4-5|6:7-8-9-0|1,2:3-4|5"; 
    // $delimiters = Array(",",":","|","-"); 
    
    $delimiters = Array("<>",","); 
    
    $res = multiexplode($delimiters,$long_string); 
    echo '<pre>'; 
    print_r($res); 
    echo '</pre>'; 
    ?> 
    
    관련 문제