如何在数组索引中使用变量?

时间:2019-04-01 19:48:35

标签: php

我有一些单独的物品。目前,我逐一浏览它们,但我想遍历它们。如果这些是数字索引,那我就没问题了。但是由于这些都是名称,因此更具挑战性。找不到任何东西,但是我可能正在找错东西(这些是真正的数组索引)吗?

目前,我以以下方式检查和输出它们。

                if ($term_meta['term_1']) { echo '"'.$term_meta['term_1'].'",'; } 
                if ($term_meta['term_2']) { echo '"'.$term_meta['term_2'].'",'; } 
                if ($term_meta['term_3']) { echo '"'.$term_meta['term_3'].'",'; } 
                if ($term_meta['term_4']) { echo '"'.$term_meta['term_4'].'",'; } 
                if ($term_meta['term_5']) { echo '"'.$term_meta['term_5'].'",'; } 
                if ($term_meta['term_6']) { echo '"'.$term_meta['term_6'].'",'; } 
                if ($term_meta['term_7']) { echo '"'.$term_meta['term_7'].'",'; } 
                if ($term_meta['term_8']) { echo '"'.$term_meta['term_8'].'",'; }

我想通过类似这样的循环来达到类似的结果。但是我无法使这些变量起作用。

for ($terms_num = 1; $terms_num<=8; $terms_num++) {
    if ($term_meta['term_'+$terms_num]) { echo '"'.$term_meta['term_'+$terms_num].'",';}
}

2 个答案:

答案 0 :(得分:1)

在php中,您以'。'连接。 你也不能检查键是否在这样的数组中,而是使用array_key_exists(或类似的东西,我不声称知道所有的PHP库)

for ($terms_num = 1; $terms_num<=8; $terms_num++) {
    if (array_key_exists('term_'.$terms_num,$term_meta) { 
        echo '"'.$term_meta['term_'.$terms_num].'",';
    }
}

答案 1 :(得分:0)

使用array_filter和爆破要容易得多。
Array_filter会删除任何null或空值,并且implode将从数组中构建一个字符串。

echo '"' . implode('","', array_filter($term_meta)) . '"';

在此处查看示例:
https://3v4l.org/vCrMM

循环作为另一个答案将创建(可能)不需要的尾随逗号。
使用implode不会创建任何尾随逗号。