2016-06-16 5 views
2

배열이있어서 새로운 숫자 배열을 만들고 싶습니다. 이것은 다음과 같습니다PHP 숫자 배열 순서

$created_old = explode("_", $result[$i]["created"]); 
$created_new = array(); 
$created_new[0] = $created_old[2]; 
$created_new[1] = $created_old[0]; 
$created_new[2] = $created_old[1]; 
$created_new[3] = ""; 
$created_new[4] = rtrim(explode(":", $created_old[3])[2], ")"); 

//Get name from the database 

$created_new[3] = $name; 

$created = implode("_", $created_new); 

이 버전은 잘 작동하지만 이전 한 줄 누락, 그래서 코드이 될 것이다 : 문자열 $created가에있는 두 번째 코드에서

$created_old = explode("_", $result[$i]["created"]); 
$created_new = array(); 
$created_new[0] = $created_old[2]; 
$created_new[1] = $created_old[0]; 
$created_new[2] = $created_old[1]; 
//$created_new[3] = ""; - I am missing 
$created_new[4] = rtrim(explode(":", $created_old[3])[2], ")"); 

//Get name from the database 

$created_new[3] = $name; 

$created = implode("_", $created_new); 

을 잘못된 순서. 인덱스 4와 3이 전환됩니다. 연관 배열이라면 이것을 이해할 수있을 것입니다. 그러나 숫자 배열이므로 숫자를 증가시키고 beeing을 이와 같이 정렬한다고 가정합니다. 내가 작업 버전으로 나는 JRsz

+0

PHP에는'numeric' 배열이 없습니다. 모두 연관되어 있습니다. –

+0

그것은 내 질문에 관련이 없으므로 나는 그것을 게시하지 않았다 : FYI ist는 다음과 같은 형식의 데이터베이스에서 읽은 문자열이다.'123_123_123_abc : (abc : 123)' – JRsz

+0

'$ created_new = array_fill (0 , 5, '');'초기화가 문제를 해결해야합니다. –

답변

3

모든 PHP 배열이 연관되어를이 코드를 수정하지만 오히려처럼 코드가 동작하는 이유를 이해 ...

안부에 도움을 필요로하지 않습니다. 구어체의 음성으로 기대되는 "숫자 배열"같은 것은 없습니다. 키는 문자열이나 숫자 일 수 있습니다. 중요하지 않습니다. 키는 삽입 순서에 따라 정렬되며 절대 값에 따라 암시 적으로 정렬되지 않습니다. 당신은 내가 생각하는이 행동에 놀랄 것입니다.

$arr['a'] = 1; 
$arr['c'] = 3; 
$arr['b'] = 2; 
// ['a' => 1, 'c' => 3, 'b' => 2] 

"숫자 배열"과 완전히 똑같은 기능이 작동합니다.

키를 정렬하려면 명시 적으로 ksort을 사용해야합니다.

+0

참. 'print_r ($ created_new)'를 사용하여 배열 내용을 검사 할 수 있습니다. – KinoP

+0

좋아, 나는 그걸로 살아야한다고 생각해. 이것은 약간 이상하지만 나는 미래의 일을 염두에 두겠다. 고마워요 :) – JRsz

+0

@JRsz 다른 언어는 별도의 * 숫자 인덱스 목록 * 및 * 키 - 값지도 *; PHP는이 두 가지를 하나의 유형의 연관 키순 맵 *으로 결합합니다. – deceze