2012-12-12 4 views
2

예상대로 반환하지 않는 다음 코드가 있습니다. 나는 최종 결과는 문자열 될 것 기대했다 :PHP의 implode 함수의 가능한 제한

$organizers = array_unique($organizers);  // this returns correctly 
$organizers = implode(', ', $organizers); // this returns nothing 
var_dump($organizers);      // no data appears here 
exit; 

array_unique() 기능이 제대로 데이터를 반환하고 나는 그것이 반환하는 배열을 볼 수 있습니다. 시작하려면 $organizers 배열은 길이가 모두 20 자 미만인 간단한 1 차원 배열 문자열입니다. 나는 그 문제가 $organizers이 10,000 개가 넘는 색인 일 수 있다고 생각한다. 폭파 될 수있는 배열의 길이에는 제한이 있습니까? 그것에 대한 해결 방법이 있습니까? 매뉴얼에서 아무것도 찾을 수 없지만이 코드를 철저히 테스트했으며 오류가 implode()에 있어야한다고 생각합니다.

+0

비슷하지만 작은 배열을 사용해 보았습니까? 문자열에 이상한 문자가 있습니까? –

+5

'implode()'다음에 디버깅 출력을 넣으십시오. 단순히 기억이 부족합니까? 로그온 할 때 오류가 있습니까? – Brad

+1

@jakenoble, PHP는 바이너리 데이터와 같은 문자열을 처리합니다. "이상한 문자"는 PHP 문자열 함수와 관련이 없습니다. – Brad

답변

1

한계가 있는지 알지 못하지만, 내 마음에 오는 것은 배열을 문자열로 변환하는 것입니다. 이것은 PHP에서 문제가되어서는 안됩니다. 그러나 implode의 결과를 위해 다른 변수를 호출 해보십시오.

$organizers  = array_unique($organizers);  // this returns correctly 
$organizers_string = implode(', ', $organizers); // this returns nothing 

// This gives it a different space 
0

나는 명백한 진술을하고 있다고 생각하기는 싫지만, 문자열을 인수로 받아들이지는 않는다. 어쩌면이게 더 비슷한 것일 겁니다 ...

$organizers = array_unique($organizers); 

//I'm guessing what you wanted was an array of arrays? 
$neworganizers = array(); 
for($i = 0; $i < sizeof($organizers); $i++) 
{ 
    $neworganizers[$i] = implode(", ", $organizers); 
} 
print_r($neworganizers); 
+1

죄송합니다! 일찍부터 혼란 스럽거나 혼란스러워졌습니다. – rnirnber

1

편집 : 그리고 어떤 이유로 implode()에 여전히 문제가 있습니다.

$organizers = array_unique($organizers); 
$neworganizers = ""; 
for($i = 0; $i < sizeof($organizers); $i++) 
{ 
    $neworganizers .= $organizers[$i]; 
    if($i != sizeof($organizers) - 1) 
    { 
     $neworganizers .= ", "; 
    } 
} 

// $ neworganizers 지금 .implode()가 주최

$organizers = array(); 
$organizers[0] = "value1"; 
$organizers[1] = "value2"; 
$organizers[2] = "value3"; 
$organizers[3] = "value3"; 
$organizers = array_unique($organizers);  // strips out last index 
$organizers = implode(', ', $organizers); // returns string of "value1, value2, value3" 
echo $organizers; 

$에 전화했을 때 반환해야하는지에 해당하는 것은 writecodeline.com/php/ 작업 듯

나 또한 오래된 PHP 빌드에서 문제를 겪었습니다. 특수 문자가 포함 된 문자열로 분해/함축하려했으나 작은 따옴표로 묶었습니다. 미친 것처럼 들리지만 일부 서버에서는 큰 따옴표가 필요할 수도 있습니다.

참조 : 이전 프로덕션 서버에서 작업하는 개인적인 경험.

+0

효과가 있는지 알려주세요. 어쩌면 아직도 내파부에 문제가 있다면 위의 편집을보실 수 있습니다. – rnirnber