Php 如果数组包含特定字符,则返回所有字符串
假设我有这样一个php数组:Php 如果数组包含特定字符,则返回所有字符串,php,arrays,Php,Arrays,假设我有这样一个php数组: $compare = array("Testing", "Bar"); $my_array = array( "Foo=7654", "Bar=4.4829", "Testing=123" ); 因此,可以肯定地说: $compare[0] = "Testing" 因此,我想检查$my_array是否包含$compare[0](在上述情况下,是的,它包含),以及它是否包含从正在测试的$my_array返回的
$compare = array("Testing", "Bar");
$my_array = array(
"Foo=7654", "Bar=4.4829", "Testing=123"
);
因此,可以肯定地说:
$compare[0] = "Testing"
因此,我想检查$my_array
是否包含$compare[0]
(在上述情况下,是的,它包含),以及它是否包含从正在测试的$my_array
返回的值=123
这怎么可能呢?您可以使用
foreach
循环:
$result = array();
foreach ($compare as $comp) {
foreach ($my_array as $my) {
if (strpos($my, $comp) !== false) {
$result[] = $comp;
}
}
}
在数组中,$result
是搜索的结果
或者通过其他方式:
$result = array();
foreach ($compare as $comp) {
foreach ($my_array as $my) {
if ($comp = explode('=', $my)[0]) {
$result[] = $comp;
}
}
}
要使用单个循环
$compare = array("Testing", "Bar");
$my_array = array(
"Foo=7654", "Bar=4.4829", "Testing=123"
);
$output = [];
foreach ( $my_array as $element ) {
if ( in_array(explode('=', $element)[0], $compare)){
$output[] = $element;
}
}
print_r($output);
这只是检查值的第一部分(在=)是否在
$compare
数组中。为什么不这样做:$my_数组=['Foo'=>'7654','Bar'=>'4.4829','Testing'=>'123']
因为这样可以很容易地找到结果:echo$my_array['Testing'
我同意,但是$my_数组来自API,因此我无法更改内容。那么API究竟返回什么?API不应该以这种格式返回数据。您可以这样转换它:parse_str(内爆('&',$my_数组),$better_数组)代码>如果API在数组中放入奇怪的东西,这可能不起作用,所以要小心。@FreshPro如果API没有返回php数组,您似乎已经解析了返回的数据。因此,根据它的外观,您可以对其进行改进,使进一步的处理更容易。Double foreach很难看,if条件是错误的