将所有行的结果添加到数组中

问题描述:

我正在运行一个返回多行的查询,每行都包含一个由“|”分隔的名称字符串。将所有行的结果添加到数组中

因此,我试图分解管分离的结果,并将它建成一个新的阵列,我没有太大的成功。它似乎只返回其中一行的结果。

下面是示例代码:

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

我设法得到了我要找的结果。我觉得我可以做这个清洁工,但它的工作原理:

$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); 

试试这个,如果我理解你的观点。

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