我在这里有一个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"; }
一些背景信息;如果sop_01为null,那么所有其他值将为null
如果sop_01 is <> null
有可能其他值为“”或具有值
如果sop_02 is empty
它不为空,则为“”(由于数据如何存储在数据库中)
如果我能提供任何进一步的信息,请告诉我
Bepster
答案 0 :(得分:2)
您可以尝试使用一些内置的 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
仅包含这些值(string
s)。如果没有,您可以将它们存储在array
中并完成剩下的工作。
答案 1 :(得分:2)
首先创建一个包含要使用的所有键的数组。然后以这种方式操纵数组:
// 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
字符串,如果行是&#34;空&#34;你可以添加这一行:
$sop = empty($sop) ? 'Hello world' : $sop;
要使用循环创建$keys
数组,请使用此
$keys = array();
$i = 1;
while(isset($row['sop_'.$i])){
$keys['sop_'.$i++] = true;
}
它将创建一个数组,具体取决于多少&#34;字段&#34;匹配sop_%d
数组的模式$row
(从1开始的行)。 (这句话是否正确?)
答案 2 :(得分:2)
动态使用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]);
}
}
答案 3 :(得分:0)
此代码适用于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);
}
}
?>