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