2012-10-18 4 views
2

... 내가 잘못 무엇입니까 곳 이해 해달라고배열은, 폭발하고 내가 배열을 폭발 각 값을 읽고 다시 배열을 인쇄 할

을 내파 할 필요가있다.

$name_column = mysql_fetch_assoc($name); 
$name_column = $name_column['name']; 

name_column 배열입니다 :

내가

$query="SELECT categories FROM shops"; 
$result = mysql_query($query); 
while($column = mysql_fetch_assoc($result)){ 
    $categories=explode(",",$column['categories']); 
    foreach($categories as $value){ 
     $new_query="SELECT name from categories where id='$value'"; 
     $name = mysql_query($new_query);  
     $name_column= mysql_fetch_assoc($name); 
     array_push($shops_list,$name_column); 

    } 
} 
echo implode(",",$shops_list); 
+0

빠른 힌트의 특정 인덱스까지 내파 쿼리 내부에 더 나은 솔루션을 다른 이동 시도 필요하지 않은 경우 반복하십시오. – Tom

+2

SQL 조인을 사용하는 방법을 배우고 비효율적 인 쿼리 루핑을 수행 할 필요가 없습니다. MySQLi 또는 PDO를 사용하는 방법을 배우십시오 ... 더 이상 사용되지 않는 라이브러리를 사용할 필요가 없습니다 –

답변

2

$shop_list이 라인에서 사용하기 전에 정의되지 않았습니다. array_push($shops_list,$name_column);. 당신은 키 name을 언급 할 필요가 있듯이,

array_push($shops_list,$name_column); 

요구 사항이 라인은

array_push($shops_list,$name_column['name']); //or better 
    $shop_list[] = $name_column['name']; 
+0

루프가 손상되지 않는 이유는 무엇입니까? 각 이드 후? – user1694724

+0

'foreach ($ categories as $ value) {'는 배열'categories'의 모든 값을 순환합니다. 너가 원하는게 아니야? –

1

몇 가지 문제 문자열 변환 오류로 배열을 얻고있다 .. 내 코드가 me..this 도와주세요.

shops_list은 초기화되지 않습니다.

array_push 대신 []을 사용해야합니다.

1

다른 사람이 코에 충돌하지만, 할 수는 $의 name_column에 배열 밀어 넣기를했을 때 분명히 그에 내파를하고

Array 
(
    [0] => Array 
     (
      [name] => boo 
     ) 
) 

작동하지 않을 것입니다 : $의 name_column가 배열이기 때문에, 당신은으로 끝날.

사실, 여기서해야 할 일은 카테고리 매핑을 데이터베이스에 쉼표로 구분 된 문자열로 유지하지 않는 것입니다. 표준 DB 아키텍처는 매핑 테이블을 사용하도록 지시합니다.

  • 표 상점 shop_id 및 값을 검색
1

사용 group_concat을 CATEGORY_ID있다

  • 표 카테고리
  • 표 shop_category_map. 결과를 얻은 후 검색을 위해 직접 사용하십시오. 같은

    $result_array = explode(",",$row['category']); 
    
        foreach($result_array as $ra) 
        { 
        //sql command. fetch here. 
        $new_query="SELECT name from categories where id='$value'"; 
        $name = mysql_query($new_query);  
        $name_column= mysql_fetch_assoc($name); 
        $shops_list[] = $name_column; 
        } 
    

  • 1

    //하지 않는다, 배열을 폭발하고 배열 성능에

    $a = '192.168.3.250'; 
    $b = explode('.',$a); 
    $ar = array(); 
    
    for($i=0;$i<=2;$i++) 
    { 
        array_push($ar,$b[$i]); 
    } 
    
    $C = implode($ar,'.'); 
    print_r($C);