将所有行的结果添加到数组中
问题描述:
我正在运行一个返回多行的查询,每行都包含一个由“|”分隔的名称字符串。将所有行的结果添加到数组中
因此,我试图分解管分离的结果,并将它建成一个新的阵列,我没有太大的成功。它似乎只返回其中一行的结果。
下面是示例代码:
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"
}
}
答
我设法得到了我要找的结果。我觉得我可以做这个清洁工,但它的工作原理:
$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
你能告诉我们var_dump($ return [“region”])''的输出吗? –
这不是很好,但我已经将输出添加到我的问题。 – Stephen