Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP if循环这是最有效的方法吗?_Php_Loops_If Statement - Fatal编程技术网

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

PHP if循环这是最有效的方法吗?,php,loops,if-statement,Php,Loops,If Statement,我这里有一个if语句,它非常适合我想要它做的事情。它循环通过一些值,例如sop_01到sop_06,并用br分隔其输出。我想知道这是否是编写此代码的最有效方法,因为对我来说,它似乎不是非常有效,例如,如果值从sop_01到sop_1000,会发生什么情况?您不会手动编写此代码吗 if (TRIM($row['sop_01']) <> null){ $sop = TRIM($row['sop_01']); if (TRIM($row['sop_02']) <>

我这里有一个if语句,它非常适合我想要它做的事情。它循环通过一些值,例如sop_01到sop_06,并用br分隔其输出。我想知道这是否是编写此代码的最有效方法,因为对我来说,它似乎不是非常有效,例如,如果值从sop_01到sop_1000,会发生什么情况?您不会手动编写此代码吗

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"; }
if(修剪($row['sop_01'])空值){
$sop=修剪($row['sop_01']);
如果(修剪($row['sop_02'])“”){
$sop=$sop.“
”.TRIM($row['sop_02']); 如果(修剪($row['sop_03'])“”){ $sop=$sop.“
”.TRIM($row['sop_03']); 如果(修剪($row['sop_04'])“”){ $sop=$sop.“
”.TRIM($row['sop_04']); 如果(修剪($row['sop_05'])“”){ $sop=$sop.“
”.TRIM($row['sop_05']); 如果(修剪($row['sop_06'])“”){ $sop=$sop.“
”.TRIM($row['sop_06']); } } } } } }否则{$sop=“你好世界”;}
一点背景信息;如果sop_01为空,则所有其他值均为空

如果sop_01为空则其他值可能为“”或具有值

如果sop_02为空不为空,则为“”(取决于数据在数据库中的存储方式)

请让我知道,如果我可以提供任何进一步的信息


Bepster

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

$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=array_map('trim',$row);//修剪所有当前值
如果($row['sop_01']null){
$temp=array_filter($row);//将删除所有空的、空的。。。
$sop=内爆(“
”,$temp);//将值与
}否则{ $sop=“你好世界”; }
假设
$row
仅包含这些值(
string
s)。如果没有,您可以将它们存储在
数组中
,然后执行其余操作


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

$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=array_map('trim',$row);//修剪所有当前值
如果($row['sop_01']null){
$temp=array_filter($row);//将删除所有空的、空的。。。
$sop=内爆(“
”,$temp);//将值与
}否则{ $sop=“你好世界”; }
假设
$row
仅包含这些值(
string
s)。如果没有,您可以将它们存储在
数组中
,然后执行其余操作


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

 // 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);
要使用循环创建
$keys
数组,请使用以下命令

$keys = array();
$i = 1;
while(isset($row['sop_'.$i])){
  $keys['sop_'.$i++] = true;
}

它将创建一个数组,具体取决于与
$row
数组的模式
sop\ud
(从1开始的一行)匹配的“字段”数量。(这句话正确吗?

首先创建一个包含所有要使用的键的数组。然后按以下方式操作阵列:

 // 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);
要使用循环创建
$keys
数组,请使用以下命令

$keys = array();
$i = 1;
while(isset($row['sop_'.$i])){
  $keys['sop_'.$i++] = true;
}

它将创建一个数组,具体取决于与
$row
数组的模式
sop\ud
(从1开始的一行)匹配的“字段”数量。(这句话正确吗?

用于循环和动态构建索引

$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]);
    }
}
$start=1;
$end=计数($row);
$sop='';

对于($i=$start;$i使用for循环并动态构建索引

$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]);
    }
}
$start=1;
$end=计数($row);
$sop='';

对于($i=$start;$i此代码将适用于1000个或更多值-

<?php
$rows = count($row);
$i  = 2;
$sop = "";
if (TRIM($row['sop_01']) <> null){
    $sop = $sop . TRIM($row['sop_01']);
    get_soap($rows, $i, $sop);
} else { $sop = "hello world"; }

function get_soap($rows, $i, $sop){

    if($i <= $rows){

        if (TRIM($row['sop_'.$i]) <> "")
            $sop = $sop . "<br>" . TRIM($row['sop_'.$i]);

        $i++;
        get_soap($rows ,$i, $sop);
    }  
}
?>

此代码适用于1000个或更多值-

<?php
$rows = count($row);
$i  = 2;
$sop = "";
if (TRIM($row['sop_01']) <> null){
    $sop = $sop . TRIM($row['sop_01']);
    get_soap($rows, $i, $sop);
} else { $sop = "hello world"; }

function get_soap($rows, $i, $sop){

    if($i <= $rows){

        if (TRIM($row['sop_'.$i]) <> "")
            $sop = $sop . "<br>" . TRIM($row['sop_'.$i]);

        $i++;
        get_soap($rows ,$i, $sop);
    }  
}
?>


什么是
$row['sop_01']
字符串的数据类型?如果数组是嵌套数组,效率会更高:
$row['sop'][1]
等等。如果这是来自数据库的数据,那么它来自设计不好/未规范化的数据库是的。在这种情况下,最好使用嵌套数组。
$row的数据类型是什么['sop_01']
?字符串?如果您的数组是嵌套数组,效率会更高:
$row['sop'][1]
,等等。如果这是来自数据库的数据,那么它来自设计糟糕/未规范化的数据库是的。在这种情况下,最好使用嵌套数组。将
$end
设置为
count($row)的值
使添加更多行更容易使
$end
计数($row)的值
为了更容易添加更多的行,这似乎在代码量最小的情况下工作得很好,但是$row数组包含其他值,我只想获取sop_01、sop_02等的值。有没有办法只选择这些值?这似乎在代码量最小的情况下工作得很好,但是$row数组包含其他值es和我只想取sop_01、sop_02等的值……有没有办法只选择这些?