Php if语句变量以

Php if语句变量以,php,Php,有没有办法询问变量是否以…开头 我的问题是在一个数据库中,我有图像文件和音频文件,我想要一个if语句,它说if$file以“audio/…”开头。你可以用它来获取字符串的一部分,然后你可以检查它是否等于'audio/' if (substr($file, 0, 6)=='audio/') { } 您可以使用获取字符串的一部分,然后检查它是否等于'audio/' if (substr($file, 0, 6)=='audio/') { } 没有这样的内置函数,但可以使用字符串比较来实现等效行为

有没有办法询问变量是否以…开头

我的问题是在一个数据库中,我有图像文件和音频文件,我想要一个if语句,它说if$file以“audio/…”开头。

你可以用它来获取字符串的一部分,然后你可以检查它是否等于
'audio/'

if (substr($file, 0, 6)=='audio/') {
}
您可以使用获取字符串的一部分,然后检查它是否等于
'audio/'

if (substr($file, 0, 6)=='audio/') {
}

没有这样的内置函数,但可以使用字符串比较来实现等效行为

if (strncmp('audio/', $file, 6) === 0) {
  // do something
}
或者更常见但性能较差的解决方案

if (substr($file, 0, 6) === 'audio/') {
  // do something
}
但是,您应该能够直接从数据库中选择相应的行

WHERE column LIKE 'audio/%'

没有这样的内置函数,但可以使用字符串比较来实现等效行为

if (strncmp('audio/', $file, 6) === 0) {
  // do something
}
或者更常见但性能较差的解决方案

if (substr($file, 0, 6) === 'audio/') {
  // do something
}
但是,您应该能够直接从数据库中选择相应的行

WHERE column LIKE 'audio/%'


为什么不用substr呢

if (substr($file,0,5) == "audio")

etc

为什么不使用substr-like

if (substr($file,0,5) == "audio")

如果在字符串中未找到
$needle
,etc

strpos()
将返回
false
。您必须使用
==
,因为
(false==0)===true
strpos()
如果在字符串中找不到
$needle
,则返回
false
。您必须使用
==
,因为
(false==0)===true
+1对于
strncmp
解决方案,它看起来更干净。我不会说它的性能要高很多,我们谈论的是6个字符:)。@bazmegakapa:它的性能更多的是解释器处理它的方式,而不是一个人打字的速度;)有人说,它比
substr()
-解决方案快20%。我没有亲自测试,当然我们谈论的是非常小的持续时间。然而,我认为至少知道这一点是好的:)我也不是在谈论打字速度:)。我刚才说,当您必须从一个短字符串中获取6个字符时,这并不重要。+1对于
strncmp
解决方案来说,似乎更干净。我不会说它的性能要高很多,我们谈论的是6个字符:)。@bazmegakapa:它的性能更多的是解释器处理它的方式,而不是一个人打字的速度;)有人说,它比
substr()
-解决方案快20%。我没有亲自测试,当然我们谈论的是非常小的持续时间。然而,我认为至少知道这一点是好的:)我也不是在谈论打字速度:)。我刚才说,当你必须从一个短字符串中获取6个字符时,这其实并不重要。他正在尝试获取
audio
目录中的文件。如果文件名以“audio”(例如audio1.wav)开头,并且文件名以“audio”(例如audiofos/x.jpg)开头的dirs中的文件,那么这也将获得没有dir的简单文件。他正在尝试获取
audio
目录中的文件。如果文件名以“audio”(例如audio1.wav)开头,并且文件名以“audio”(例如audiofos/x.jpg)开头的dirs中的文件,则也会得到没有dir的简单文件。