Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果数组包含特定字符,则返回所有字符串_Php_Arrays - Fatal编程技术网

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返回的

假设我有这样一个php数组:

$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条件是错误的