2017-03-21 6 views
0

다른 게시물에서이 코드를 발견했습니다.이 코드는 꽤 도움이되었지만, 절반 만 방정식이었습니다. 다음 코드로 인라인을하면 데이터베이스에서 문자열을 가져 와서 2 차원 배열로 분해하고 배열에서 값을 편집 한 다음 다시 같은 형식으로 저장 준비를해야합니다. 따라서 기존 스크립트와 동일한 순서로 역순으로 처리됩니다.PHP가 폭발하여 다차원 배열 MKII에 할당합니다.

마법사 중 누구라도 나를 도와 줄 수 있습니까? :) 고맙습니다!

다른 포스트의 코드 >>

$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song"; 
$data = explode(" \n ", $data); 

$out = array(); 
$step = 0; 
$last = count($data); 
$last--; 

foreach($data as $key=>$item){ 

    foreach(explode(' ',$item) as $value){ 
    $out[$key][$step++] = $value; 
    } 

    if ($key!=$last){ 
    $out[$key][$step++] = ' '; // not inserting last "space" 
    } 

} 

print '<pre>'; 
print_r($out); 
print '</pre>'; 
+0

그래서 무엇을 시도 했습니까? 또한 왜 * $ out * 배열에 간헐적으로 단일 공백을 저장하려고합니까? 어떻게 유용할까요? – trincot

+1

'내가 좋아하는 영화를 좋아한다는 입력을 받아서 최종 결과는 무엇인가? \ n 사랑한다 stackoverflow.com com \ n 나는 록 노래를 좋아한다 '? – AbraCadaver

+0

마지막 공백을 삽입하려면 $ last--를 주석 처리/제거해야합니다. –

답변

0

인용 된 코드 값은 같은 공간을 별도의 배열 요소를 삽입한다. 하나는 그 혜택을 가져올 지 궁금해 할 수 있습니다.

function explode2D($row_delim, $col_delim, $str) { 
    return array_map(function ($line) use ($col_delim) { 
     return explode($col_delim, $line); 
    }, explode($row_delim, $str)); 
} 

function implode2D($row_delim, $col_delim, $arr) { 
    return implode($row_delim, 
     array_map(function ($row) use ($col_delim) { 
      return implode($col_delim, $row); 
     }, $arr)); 
} 

그들은 서로의 반대, 그리고 두 개의 구분 기호를 지정해야하는 것을 제외하고 표준 내파 기능을 폭발 훨씬처럼 작동 :

다음은 사용할 수있는 두 개의 함수 하나 행을 구분하고 열을 구분합니다.

$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song"; 

$arr = explode2D(" \n ", " ", $data); 

// manipulate data 
// ... 
$arr[0][2] = "scary"; 
$arr[2][2] = "balad"; 

// convert back 

$str = implode2D(" \n ", " ", $arr); 

그것이 repl.it에서 실행을 참조하십시오 : 여기

당신이 그것을 사용하는 것이 방법이다.

+0

이 남자는 전문가입니다. mysql 데이터베이스에 저장되는 흔하지 않은 구분자, 즉, ¶ 또는 ¶을 어떻게 사용할 지 질문 할 수 있습니까? –

+0

mysql 데이터베이스에 모든 종류의 문자를 허용하려면 [이 Q & A] (http://stackoverflow.com/q/279170/5459839)를 참조하십시오. 확인하고 할 수있는 몇 가지 사항이 있습니다. – trincot

+0

대단히 감사합니다. –