foreach中的PHP对象属性字符串连接,而不先设置空字符串

时间:2017-09-07 09:43:58

标签: php

我有一些WordPress自定义字段数据,我正在循环并创建一个逗号分隔的字符串。 (小)问题是如果我在循环之前没有将属性设置为空/ null等,我会收到警告。

我想如果字符串还没有存在,你就不能连接它。虽然我得到了警告,但foreach做了我需要的,没有错误。

要停止警告,我已将该属性设置为空字符串以启动:

$memlog->postnominals = "";
foreach (get_field('post_nominals', $post->id) as $postnominal) {
    $memlog->postnominals .= $postnominal->post_title . ", ";
}

虽然不是一个大问题,但我宁愿知道我是否有办法在不设置空字符串的情况下做到这一点?

2 个答案:

答案 0 :(得分:2)

不要先使用连接,join数组,这样你以后也不必剥离最后一个,

$memlog->postnominals = join(', ', array_column(get_field(...), 'post_title'));

array_column仅适用于PHP 7+中的对象,旧版本使用地图:

$memlog->postnominals = join(', ', array_map(
    function ($p) { return $p->post_title; }, 
    get_field(...)
));

答案 1 :(得分:0)

请使用数组然后将数据从数组中内爆以形成逗号分隔的字符串。

示例:

        $aa = array(1 => 'a', 2 => 'b', 3 => 'c');
        foreach ($aa as $k => $v) {
            $b[] = $v;
        }
        print_r(implode(',', $b));