我有这个php数组
$Topic=[
'50 Cent' => '50cent.jpg Rap',
'Adam Levine' => 'adam.jpg Rock',
'Android' => 'android.jpg Operating System',
];
和这个foreach代码
<?php foreach ($Topic as $key => $value):
$type=substr($value,strpos($value,' '));
$value=explode(' ',$value);?>
<?php if (strcmp($type,'Rap')==0): ?>
<div class="topic_d">
<img src="topics/<?php echo $value[0]?>" class="topic_img">
</div>
<?php endif ?>
<?php endforeach ?>
我的目标是打印阵列中所有类型为'Rap'的主题。但我不能这样做,即使我打印type
它返回Rap /
答案 0 :(得分:0)
添加修剪以比较类型与&#39; Rap&#39;
if (strcmp(trim($type),'Rap')==0)
或
$type=trim(substr($value,strpos($value,' ')));
因为类型不是&#39; Rap&#39;但是&#39;说唱&#39;
答案 1 :(得分:0)
您也可以选择正则表达式:
<?php
$Topic=[
'50 Cent' => '50cent.jpg Rap',
'Adam Levine' => 'adam.jpg Rock',
'Android' => 'android.jpg Operating System',
];
$regex_topic = '/^[a-z0-9.]+\s([a-z\s]+)$/gi';
?>
<?php foreach( $Topic as $topic_key => $topic_value ): ?>
<?php
$match = '';
preg_match($regex_topic, $topic_value, $topic);
?>
<?php if( isset($match[1]) && $match[1] == 'Rap' ): ?>
<div class="topic_d">
<img src="topics/<?php echo $value[0]?>" class="topic_img">
</div>
<?php endif ?>
<?php endforeach ?>
正则表达式可以像:
[a-z0-9.]+\s
是你的.jpg部分,所以我们抓住了一堆字符后跟一个空格[a-z\s]+
是您的主题,是字符和空格的组合([a-z\s]+)
对它们进行分组可以让它们抓住它们preg_match($regex, $string, $match)
中通过引用传递一个额外的变量,其中$match[0]
包含根据正则表达式的已导入的捕获字符串,$match[1], $match[2], ... $match[n]
是您的组{{3 }}