Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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_String_Search - Fatal编程技术网

PHP-将字符串转换为多个数组

PHP-将字符串转换为多个数组,php,arrays,string,search,Php,Arrays,String,Search,我正在努力解决这个问题 我有一根这样的绳子 $test2=“AB:001003;AC:001003004005008;AD:0020033004007008009” 它是两个字母:3位数字(可以重复) 此字符串将有多个2个字母的前缀,并且3位条目的数量将有所不同 我需要能够找到2个字母前缀和相关的3位数字之间的匹配 字符串中是否存在AD003?我知道003多次出现,但我只想找到AD003,或者我查询的另一个匹配项 我认为将字符串转换为以2个字母前缀命名的单个数组将是一种可行的方法 $AB = a

我正在努力解决这个问题

我有一根这样的绳子

$test2=“AB:001003;AC:001003004005008;AD:0020033004007008009”

它是两个字母:3位数字(可以重复)

此字符串将有多个2个字母的前缀,并且3位条目的数量将有所不同

我需要能够找到2个字母前缀和相关的3位数字之间的匹配

字符串中是否存在AD003?我知道003多次出现,但我只想找到AD003,或者我查询的另一个匹配项

我认为将字符串转换为以2个字母前缀命名的单个数组将是一种可行的方法

$AB = array('001','003');
$AC = array('001','003','004',008);
$AD = array('002','003','004','007','008','009');
我已经在
上爆炸了它然后是

$parts =  explode(";",$test2) ;
foreach ($parts as $value) {
    $a[] = explode(":", $value);
}
print_r ( $a );            
这导致:

Array
(
    [0] => Array
        (
            [0] => AB
            [1] => 001,002,003
        )

    [1] => Array
        (
            [0] => AC
            [1] => 001,003,004,005
        )

    [2] => Array
        (
            [0] => AD
            [1] => 002,003,004
        )

)
但我不知道如何走得更远

我希望能够在阵列中搜索特定匹配项:

if (in_array("003", $AD)) { 
    echo "Match";
}
如果有比转换为数组更简单的方法在字符串中查找AD003,那么我很乐意尝试


谢谢使用第一个数组值作为键:

$parts = explode(":", $value);
$key = array_shift($parts);
$a[$key] = $parts;
然后你可以做:

if(isset($a['AD']) && in_array("003", $a['AD']))
  ...

将第一个数组值用作键:

$parts = explode(":", $value);
$key = array_shift($parts);
$a[$key] = $parts;
然后你可以做:

if(isset($a['AD']) && in_array("003", $a['AD']))
  ...
结果如下:

Array
(
    [AB] => Array
        (
            [0] => 001
            [1] => 003
        )

    [AC] => Array
        (
            [0] => 001
            [1] => 003
            [2] => 004
            [3] => 005
            [4] => 008
        )

    [AD] => Array
        (
            [0] => 002
            [1] => 003
            [2] => 004
            [3] => 007
            [4] => 008
            [5] => 009
        )

)
Yep, it's there.
结果如下:

Array
(
    [AB] => Array
        (
            [0] => 001
            [1] => 003
        )

    [AC] => Array
        (
            [0] => 001
            [1] => 003
            [2] => 004
            [3] => 005
            [4] => 008
        )

    [AD] => Array
        (
            [0] => 002
            [1] => 003
            [2] => 004
            [3] => 007
            [4] => 008
            [5] => 009
        )

)
Yep, it's there.
你可以试试这个

<?php
// Example 1
$apple = "apple1 apple2 apple3 apple4 apple5 apple6";
$apples = explode(" ", $apple);
echo $apples[0]; // apple1
echo $apples[1]; // apple2...........

?>

您可以试试这个

<?php
// Example 1
$apple = "apple1 apple2 apple3 apple4 apple5 apple6";
$apples = explode(" ", $apple);
echo $apples[0]; // apple1
echo $apples[1]; // apple2...........

?>

或者您可以使用preg\u match签入字符串

$string = "AB:001,003;AC:001,003,004,005,008;AD:002,003,004,007,008,009";

if( preg_match('/AD:([0-9,]+)?003/',$string)){
//Your code here
}

或者您可以使用preg_match签入字符串

$string = "AB:001,003;AC:001,003,004,005,008;AD:002,003,004,007,008,009";

if( preg_match('/AD:([0-9,]+)?003/',$string)){
//Your code here
}
试试这个

<?php

$test2 = "AB:001,003;AC:001,003,004,005,008;AD:002,003,004,007,008,009";

$final = array();
$parts =  explode(";",$test2) ;
foreach ($parts as $value) {

    $a = explode(":", $value);
    foreach(explode(",", $a[1])as $val)
    {
       $final[$a[0].$val] =  $val;     
    }

}

echo "<pre>";
print_r ($final);
您可以使用
array\u key\u exists('AB001',$array')检查值
AB001
是否存在

试试这个

<?php

$test2 = "AB:001,003;AC:001,003,004,005,008;AD:002,003,004,007,008,009";

$final = array();
$parts =  explode(";",$test2) ;
foreach ($parts as $value) {

    $a = explode(":", $value);
    foreach(explode(",", $a[1])as $val)
    {
       $final[$a[0].$val] =  $val;     
    }

}

echo "<pre>";
print_r ($final);

您可以使用
array\u key\u exists('AB001',$array')检查值
AB001
是否存在

这似乎是您要搜索的查询的最佳解决方案。这似乎是最简单的解决方案。如果(!preg_match('/AD:([0-9,]+)?003/',$string)){
,执行此操作是否有问题?Thanks@Rocket绝对没有?没有问题?或者没有,不要这样做?:)谢谢这似乎是您要搜索的查询的最佳解决方案这似乎是最简单的解决方案。如果(!preg_match('/AD:([0-9,]+)?003/,$string)){
?Thanks@Rocket绝对没有?没有问题?或者没有,不要这样做?:)感谢除regex之外的其他第二好解决方案,可用于搜索您的查询除regex之外的其他第二好解决方案,可用于搜索您的查询