PHP : 다차원 배열을 평평하게합니다
-
10-07-2019 - |
문제
","그런 다음 ":"에 의해 폭발해야합니다. 충분히 ...
$alttitle = "35:title1,36:title2, 59:title5"
$replacetitles = explode(",",$alttitle);
for ($i = 0 ; $i < count($replacetitles) ; $i++) {
$replacetitle[] = explode(":", $replacetitles[$i]);
}
생산하는 ...
Array ([0] => array ([0] => 35 [1] => title1) [1] => 배열 ([0] => 36 [1] => title2) [2] => array ( 0] => 59 [1] => title5)))
... 그러나 35,36,59 숫자는 독특하므로 이것이 배열의 핵심이되기를 원합니까?
배열 ([35] => title1 [36] => title2 [59] => title5)
해결책
루핑 중에 간단히 설정하십시오.
$alttitle = "35:title1,36:title2, 59:title5"
$tmptitles = explode(",",$alttitle);
$replacetitle = array();
foreach($tmptitles as $tmptitle) {
$tmparr = explode(":", trim($tmptitle));
$replacetitle[intval($tmparr[0])] = trim($tmparr[1]);
}
위의 경우 배열에 최소 반복 수를 만듭니다.
다른 팁
여기에 또 다른 과잉 대안이 있습니다.
if (!preg_match_all('/([0-9]+)\s*:\s*([^,]+)/', $alttitle, $matches)) {
//not valid
}
$array = array_combine($matches[1], $matches[2]);
print_r($array);
여기 내 테이크가 있습니다
$alttitle = "35:title1,36:title2, 59:title5";
$entries = preg_split( "/ *, */", $alttitle );
$flattened = array();
for ( $i = 0, $l = count( $entries ); $i < $l; $i++)
{
list( $index, $value ) = explode( ':', $entries[$i] );
$flattened[$index] = $value;
}
print_r( $flattened );
편집하다
이제 속도 테스트 대 폭발/트림으로
$testData = implode( ',', array_fill( 1, 10000, "a,b, c, d" ) );
$start = microtime( true );
$entries = explode( ",", $testData );
$ouptput = array();
for ( $i = 0, $l = count( $entries ); $i < $l; $i++ )
{
$output[] = trim( $entries[$i] );
}
echo "explode/trim test took: ", ( microtime( true ) - $start ), ' seconds<br>';
unset( $start, $entries, $output );
$start = microtime( true );
$entries = preg_split( "/ *, */", $testData );
$ouptput = array();
for ( $i = 0, $l = count( $entries ); $i < $l; $i++ )
{
$output[] = $entries[$i];
}
echo "preg_split test took: ", ( microtime( true ) - $start ), ' seconds<br>';
코드 후에는 다음을 추가 할 수 있습니다.
$ar = array();
for ($i = 0; $i < count($replacetitle); $i++) {
$ar[$replacetitle[$i][0]] = $replacetitle[$i][1];
}
제휴하지 않습니다 StackOverflow