Php 如何在一组数组中循环一个条件以返回一个为真的数组的值

Php 如何在一组数组中循环一个条件以返回一个为真的数组的值,php,arrays,foreach,conditional-statements,Php,Arrays,Foreach,Conditional Statements,我有一个textarea,它提交文本,并使用explode函数将文本转换为数组,然后将该数组的值生成foreach循环中的单个数组。这就是函数 文本区域条目 周一| 0000 | 0500 |晨风| sally.jpg | DJ sally --- 周一| 0500 | 1000 |白天肥皂剧| wally.jpg | wally 处理代码 $itemlist = trim(preg_replace('/\n/', '', $itemlist )); $itemlist = explode('-

我有一个textarea,它提交文本,并使用explode函数将文本转换为数组,然后将该数组的值生成foreach循环中的单个数组。这就是函数

文本区域条目
周一| 0000 | 0500 |晨风| sally.jpg | DJ sally
---
周一| 0500 | 1000 |白天肥皂剧| wally.jpg | wally

处理代码

$itemlist = trim(preg_replace('/\n/', '', $itemlist ));
$itemlist = explode('---', $itemlist);

$dow = strtolower(date( 'D' ));
$tod = date( 'Hi' );

foreach($itemlist as $items) {
//this creates 2 arrays with 6 keys each
//array([0]=>mon[1]=>0000[2]=>0500[3]=>The Morning Blast[4]=>sally.jpg[5]=>DJ Sally)
//array([0]=>mon[1]=>0500[2]=>1000[3]=>Day Time Soap[4]=>wally.jpg[5]=>Wally)

$itempart = explode('|', $items);

if($itempart[0] == $dow && $tod >= $itempart[1] && $tod <= $itempart[2] ) {
?>

<div>
<h4><?php echo $itempart[3]; ?></h4>
<p><?php echo $itempart[5]; ?></p>
<img src="<?php echo $itempart[4]; ?>" />
</div>

<?php } 
}//endforeach ?>
$itemlist=trim(preg_replace('/\n/',''$itemlist));
$itemlist=分解('--',$itemlist);
$dow=strtolower(日期('D'));
$tod=日期('Hi');
foreach($itemlistas$items){
//这将创建2个阵列,每个阵列具有6个键
//数组([0]=>mon[1]=>0000[2]=>0500[3]=>The Morning Blast[4]=>sally.jpg[5]=>DJ sally)
//数组([0]=>mon[1]=>0500[2]=>1000[3]=>Day Time Soap[4]=>wally.jpg[5]=>wally)
$itempart=分解(“|”,$items);
如果($itempart[0]=$dow&&$tod>=$itempart[1]&&$tod

" />
问题
检查星期几和时间的条件仅处理第一个数组并正确返回输出HTML,但一旦时间过期且为false,则即使为true,也不会处理后续数组


逻辑似乎正确,但无法工作。需要做什么才能使此扫描数组列表并仅返回一个正确的数组?

代码不完整:循环已打开但从未完成。您的问题是,您只是在修剪\n,同时还需要其他字符(回车,不仅是换行)。正确消除换行

$itemlist= trim( preg_replace( '/\\s*[\\n\\r]\\s*/', '', $itemlist ) );
或者稍后用

$itempart= explode( '|', trim( $items ) );

否则您的条件将失败,因为数组元素中的
fri
前面有一个回车符

我的脚本中的循环已关闭。我只是在问题中忽略了它。