首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP循环这是最有效的方法吗?

PHP循环这是最有效的方法吗?
EN

Stack Overflow用户
提问于 2016-08-26 08:22:40
回答 4查看 87关注 0票数 1

我在这里有一个假设声明,它非常适合我想要做的事情。它循环遍历一些值,例如sop_01到sop_06,并用br分隔它们的输出。我想知道这是否是编写这段代码的最有效的方法,因为在我看来,这似乎不太有效,例如,如果值从sop_01转到sop_1000,您不会手动写出它吗?

代码语言:javascript
复制
if (TRIM($row['sop_01']) <> null){
    $sop = TRIM($row['sop_01']);
    if (TRIM($row['sop_02']) <> ""){
        $sop = $sop . "<br>" . TRIM($row['sop_02']);
        if (TRIM($row['sop_03']) <> ""){
            $sop = $sop . "<br>" . TRIM($row['sop_03']);
            if (TRIM($row['sop_04']) <> ""){
                $sop = $sop . "<br>" . TRIM($row['sop_04']);
                if (TRIM($row['sop_05']) <> ""){
                    $sop = $sop . "<br>" . TRIM($row['sop_05']);
                    if (TRIM($row['sop_06']) <> ""){
                        $sop = $sop . "<br>" . TRIM($row['sop_06']);
                    }
                }
            }
        }
    }
} else { $sop = "hello world"; }

一些背景信息;如果sop_01为空,那么所有其他值都将为空。

如果sop_01 is <> null存在其他值为“”或有值的可能性

如果sop_02 is empty不为空,则为"“(由于数据是如何存储在数据库中的)

如果我能提供更多的信息,请告诉我。

贝斯特

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2016-08-26 08:32:04

首先,创建一个包含要使用的所有键的数组。然后以这样的方式操作数组:

代码语言:javascript
复制
 // create array with "allowed" keys, btw. you can convert it into a loop :)
 $keys = array_flip(array('sop_01', 'sop_02', 'sop_03', 'sop_04', 'sop_05', 'sop_06'));
 // take only items with keys of array $keys
 $sop = array_intersect_key($row, $keys);
 // will call the function `trim` on every item of the array
 $sop = array_map('trim', $sop);
 // will remove all empty strings
 $sop = array_filter($sop);
 // will join all items of the array with a `<br>` between them.
 $sop = implode('<br>', $sop);

如果需要此Hello world字符串(如果行为“空”),则可以添加以下行:

代码语言:javascript
复制
 $sop = empty($sop) ? 'Hello world' : $sop;

若要使用循环创建$keys数组,请使用

代码语言:javascript
复制
$keys = array();
$i = 1;
while(isset($row['sop_'.$i])){
  $keys['sop_'.$i++] = true;
}

它将创建一个数组,这取决于匹配模式sop_%d的“字段”(从1行开始) $row数组的一部分。(这句话对吗?)

票数 2
EN

Stack Overflow用户

发布于 2016-08-26 08:28:57

您可以使用一些内置的函数来尝试-

代码语言:javascript
复制
$row = array_map('trim', $row); // trim all the values present
if ($row['sop_01'] <> null) {

    $temp = array_filter($row); // will remove all the empty, null ...

    $sop = implode('<br>', $temp); // concatenate the values with <br>

} else { 
    $sop = "hello world"; 
}

假设$row只包含这些值(strings)。如果没有,您可以将它们存储在array中,然后执行其余的操作。

过滤器()地图()

票数 2
EN

Stack Overflow用户

发布于 2016-08-26 08:33:36

用于循环和动态生成索引。

代码语言:javascript
复制
$start = 1;
$end = count($row);
$sop = '';
for ($i = $start; $i <= $end; $i++) {
    $num = ($i < 10) ? '0' . $i : $i;
    $index = 'sop_' . $num;
    if (TRIM($row[$index]) <> "") {
        $sop = $sop . "<br>" . TRIM($row[$index]);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39161663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档