我在这里有一个假设声明,它非常适合我想要做的事情。它循环遍历一些值,例如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为空,那么所有其他值都将为空。
如果sop_01 is <> null存在其他值为“”或有值的可能性
如果sop_02 is empty不为空,则为"“(由于数据是如何存储在数据库中的)
如果我能提供更多的信息,请告诉我。
贝斯特
发布于 2016-08-26 08:32:04
首先,创建一个包含要使用的所有键的数组。然后以这样的方式操作数组:
// 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字符串(如果行为“空”),则可以添加以下行:
$sop = empty($sop) ? 'Hello world' : $sop;若要使用循环创建$keys数组,请使用
$keys = array();
$i = 1;
while(isset($row['sop_'.$i])){
$keys['sop_'.$i++] = true;
}它将创建一个数组,这取决于匹配模式sop_%d的“字段”(从1行开始) $row数组的一部分。(这句话对吗?)
发布于 2016-08-26 08:28:57
您可以使用一些内置的函数来尝试-
$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中,然后执行其余的操作。
过滤器(),地图()
发布于 2016-08-26 08:33:36
用于循环和动态生成索引。
$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]);
}
}https://stackoverflow.com/questions/39161663
复制相似问题