2014-09-24 4 views
-2
foreach($products as $val) 
    { 
     $name = $val["name"]; 

     if(strlen($name) > 5){ 
      $name = substr($name,0,5) . '..'; 
     } 

} 

문자열 목록이 있으며 PHP를 사용하여 끝에 점을 추가하고 싶지만 위의 코드는 0을 반환합니까?substr 및 연결을 사용하는 PHP 생략 부호

+1

이 코드는 내가 알고하지만 난 붙어있어 .. $ name' 때마다' – Jenz

+0

@Jenz 나중에 대체 할 함수의 끝에서 return $shortNames;을 넣어 .. 초보자의 경우 – user3522888

답변

3

변경하려면 &을 foreach로 참조해야합니다.

예 :

foreach($products as &$val) { 
       //^reference 
    if(strlen($val['name']) > 5) { 
     $val['name'] = substr($val['name'], 0, 5) . ' ...'; 
    } 
} 

아니면 이런 식으로 편안하지 않은 경우, 해당 인덱스에 직접 가리 키도록 foreach는의 키를 사용할 수 있습니다. 당신이 다음이 모든 (단지 출력 에코)에서 변경을 원하지 않는 경우

foreach($products as $key => $val) { 
    if(strlen($val['name']) > 5) { 
     $products[$key]['name'] = substr($val['name'], 0, 5) . ' ...'; 
       //^use $key 
    } 
} 

그리고 마지막으로는 :

foreach($products as $key => $val) { 
    $name = $val['name']; 
    if(strlen($name) > 5) { 
     $name = substr($name['name'], 0, 5) . '...'; 
    } 
    echo $name; // you forgot to echo 
} 
+1

가 많은 것 참조를 사용하지 않고'$ products [$ key] [ 'name']'을 사용하여 예제를 보는 것이 더 유용합니다. – zerkms

+0

@zerkms 그래, 나도 그래, 좋은 통찰력이 참으로 참다. – Ghost

+0

@Ghost 나는이 코드를 아무 것도 사용하지 않는다. – user3522888

1

귀하의 질문은 당신이 붙어있는 곳으로 조금 불분명하다.

$products 어레이를 수정하려면 Ghost가 하나의 솔루션을 제공했습니다.

단순한 제품 이름의 배열을 원할 경우 나중에 전체 이름이 필요할 수도 있으므로 새 배열에 저장합니다. 이 코드는 어쩌면 당신 간단한 return 결과에 놓친 함수 내에 있을지

$shortNames = array(); 
foreach($products as $val) 
{ 
    $name = $val["name"]; 

    if(strlen($name) > 5){ 
     $name = substr($name,0,5) . '..'; 
    } 
    $shortNames[] = $name; 

} 

당신은

하지만 코드를 반환 위의 0

을 썼다? 내 코드 예를 들어,