2017-06-21 28 views
-2

我正在運行一個返回多行的查詢,每行都包含一個由「|」分隔的名稱字符串。將所有行的結果添加到數組中

因此,我試圖分解管分離的結果,並將它建成一個新的陣列,我沒有太大的成功。它似乎只返回其中一行的結果。

下面是示例代碼:

foreach($return['region'] as $result) { 
    $namelist[] = explode("|", $result['name']); 
} 

// remove duplicates 
$namelist = array_unique($namelist); 

print_r($namelist); 

我在做什麼錯?

vardump($return['region'])輸出(格式爲更好的可讀性):

array(14) { 
    [0]=> array(3) { 
     ["id"]=> string(1) "8" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(153) "3018|3048|3050|3055|3058|3064|3066|3119|3138|3147|3163|3165|3179|3180" 
    } 
    [1]=> array(3) { 
     ["id"]=> string(1) "9" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(461) "3007|3018|3048|3050|3054|3057|3058|3060|3064|3066|3067|3068|3069|3073|3075|3077|3086|3087|3089|3096|3100|3117|3119|3126|3127|3130|3132|3138|3141|3147|3148|3152|3153|3163|3165|3167|3175|3179|3180|3184|3197|3199" 
    } 
    [2]=> array(3) { 
     ["id"]=> string(2) "10" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(483) "3007|3018|3048|3050|3054|3057|3058|3060|3064|3066|3067|3068|3069|3073|3075|3077|3086|3087|3089|3096|3100|3102|3117|3119|3126|3127|3130|3132|3138|3139|3141|3147|3148|3152|3153|3163|3165|3167|3175|3179|3180|3184|3197|3199" 
    } 
    [3]=> array(3) { 
     ["id"]=> string(2) "11" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(384) "3009|3018|3048|3050|3054|3055|3058|3060|3064|3066|3068|3069|3075|3077|3096|3117|3119|3126|3127|3132|3138|3141|3148|3152|3153|3158|3163|3165|3167|3172|3179|3180|3184|3197|3199" 
    } 
    [4]=> array(3) { 
     ["id"]=> string(2) "43" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(43) "3055|3068|3163|3165" 
    } 
    [5]=> array(3) { 
     ["id"]=> string(2) "41" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(54) "3055|3066|3073|3163|3165" 
    } 
    [6]=> array(3) { 
     ["id"]=> string(2) "42" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(43) "3007|3058|3163|3165" 
    } 
    [7]=> array(3) { 
     ["id"]=> string(2) "44" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(54) "3066|3068|3073|3163|3165" 
    } 
    [8]=> array(3) { 
     ["id"]=> string(2) "87" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(0) "" 
    } 
    [9]=> array(3) { 
     ["id"]=> string(2) "89" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(0) "" 
    } 
    [10]=> array(3) { 
     ["id"]=> string(2) "12" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(505) "3007|3018|3050|3054|3055|3057|3058|3060|3061|3064|3066|3067|3068|3069|3073|3074|3075|3077|3086|3087|3089|3096|3100|3102|3117|3119|3126|3127|3130|3132|3138|3139|3141|3147|3148|3153|3163|3164|3165|3167|3175|3179|3180|3184|3197|3199" 
    } 
    [11]=> array(3) { 
     ["id"]=> string(2) "13" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(505) "3007|3018|3048|3050|3054|3055|3057|3058|3060|3064|3066|3067|3068|3069|3074|3075|3077|3086|3087|3089|3096|3100|3102|3117|3119|3126|3127|3130|3132|3138|3139|3141|3147|3148|3153|3163|3164|3165|3167|3175|3176|3179|3180|3184|3197|3199" 
    } 
    [12]=> array(3) { 
     ["id"]=> string(2) "39" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(54) "3066|3068|3073|3163|3165" 
    } 
    [13]=> array(3) { 
     ["id"]=> string(2) "40" 
     ["region"]=> string(2) "AU" 
     ["name"]=> string(32) "3068|3073|3165" 
    } 
} 
+0

你能告訴我們var_dump($ return [「region」])''的輸出嗎? –

+0

這不是很好,但我已經將輸出添加到我的問題。 – Stephen

回答

0

我設法得到了我要找的結果。我覺得我可以做這個清潔工,但它的工作原理:

$qresult = $return['region']; 
$qresult = array_filter($qresult); 

$namelist = array(); 
    foreach($qresult as $result) { 
    $namelist[] = $result['name']; 
    } 

$namelist = array_combine($namelist,$namelist); 
$namelist = implode("|", $namelist); 
$namelist = explode("|", $namelist); 
$namelist = array_filter(array_unique($namelist)); 

print_r($namelist); 
0

試試這個,如果我理解你的觀點。

foreach($return['region'] as $result) { 
    $namelist[] = explode("|", $result['name']); 

    // remove duplicates 
    $namelist = array_unique($namelist); 

    //print_r($namelist); 
    printf("<pre>%s</pre>",print_r($namelist, true)) ; 
} 
+0

這將打印foreach循環中每行的結果,但是我試圖將來自所有行的結果存儲到我可以在此循環之外使用的變量中。 – Stephen

相關問題