PHP条件查询查询数据

PHP代码

foreach ($A_data as $code => $cumulative) { 
                    $number = substr($code,1,5); 
                    $arr = explode("-",$number);
                    if ($arr[1] >= 1 && $arr[1] <= 9 ){
                     if ($arr[0] == 1) {
                         $part2['X'][] = $code;
                         $part2['Y'][] = $cumulative;
                    } 
                   
                }  
               }

打dd断点$part2查询出:

array(2) { ["X"]=> array(18) { [0]=> string(5) "P1-01" [1]=> string(5) "P1-02" [2]=> string(5) "P1-03" [3]=> string(5) "P1-04" [4]=> string(5) "P1-05" [5]=> string(5) "P1-06" [6]=> string(5) "P1-07" [7]=> string(5) "P1-08" [8]=> string(5) "P1-09" [9]=> string(5) "J1-01" [10]=> string(5) "J1-02" [11]=> string(5) "J1-03" [12]=> string(5) "J1-04" [13]=> string(5) "J1-05" [14]=> string(5) "J1-06" [15]=> string(5) "J1-07" [16]=> string(5) "J1-08" [17]=> string(5) "J1-09" } ["Y"]=> array(18) { [0]=> string(4) "0.06" [1]=> string(4) "0.05" [2]=> string(4) "0.07" [3]=> string(4) "0.05" [4]=> string(4) "0.07" [5]=> string(4) "0.04" [6]=> string(4) "0.06" [7]=> string(4) "0.06" [8]=> string(4) "0.07" [9]=> string(4) "0.07" [10]=> string(4) "0.06" [11]=> string(4) "0.04" [12]=> string(4) "0.07" [13]=> string(4) "0.07" [14]=> string(4) "0.04" [15]=> string(4) "0.07" [16]=> string(4) "0.05" [17]=> string(4) "0.06" } }

现在只想要J1-的名称和数据,应该在PHP怎么体现出来?

【以下回答由 GPT 生成】

在给定的代码中,已经使用了条件查询来获取以J1-开头的名称和数据。如果打印结果中只需要以J1-开头的名称和数据,可以直接访问$part2['X']$part2['Y']来获取相应的数组。以下是具体的解决方案:

$filteredX = array(); // 保存以J1-开头的名称
$filteredY = array(); // 保存对应的数据

foreach ($part2['X'] as $index => $name) {
    // 获取名称的前两个字符
    $prefix = substr($name, 0, 2);

    // 判断是否以J1-开头
    if ($prefix == "J1") {
        $filteredX[] = $name; // 将名称添加到filteredX数组中
        $filteredY[] = $part2['Y'][$index]; // 将对应的数据添加到filteredY数组中
    }
}

// 打印结果
print_r($filteredX);
print_r($filteredY);

以上代码会输出:

Array
(
    [0] => J1-01
    [1] => J1-02
    [2] => J1-03
    [3] => J1-04
    [4] => J1-05
    [5] => J1-06
    [6] => J1-07
    [7] => J1-08
    [8] => J1-09
)
Array
(
    [0] => 0.07
    [1] => 0.06
    [2] => 0.04
    [3] => 0.07
    [4] => 0.07
    [5] => 0.04
    [6] => 0.07
    [7] => 0.05
    [8] => 0.06
)

这样可以得到只包含以J1-开头的名称和数据的数组。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

本回答自动生成,以下引用ChatGPT官方回答:

在PHP中,你可以使用array_filter函数来筛选数组中的元素,然后获取以J1-开头的名称和对应的数据。array_filter函数接受一个数组和一个回调函数作为参数,回调函数用于定义筛选条件。

以下是如何在PHP中实现获取以J1-开头的名称和数据的示例代码:

$part2 = [
    "X" => ["P1-01", "P1-02", "P1-03", "P1-04", "P1-05", "P1-06", "P1-07", "P1-08", "P1-09", "J1-01", "J1-02", "J1-03", "J1-04", "J1-05", "J1-06", "J1-07", "J1-08", "J1-09"],
    "Y" => ["0.06", "0.05", "0.07", "0.05", "0.07", "0.04", "0.06", "0.06", "0.07", "0.07", "0.06", "0.04", "0.07", "0.07", "0.04", "0.07", "0.05", "0.06"]
];

// 定义回调函数用于筛选以J1-开头的名称
$callback = function ($value) {
    return strpos($value, "J1-") === 0;
};

// 使用array_filter函数筛选数组
$filteredX = array_filter($part2['X'], $callback);
$filteredY = array_filter($part2['Y'], $callback);

// 转换为索引数组
$filteredX = array_values($filteredX);
$filteredY = array_values($filteredY);

// 输出结果
var_dump($filteredX); // 输出J1-开头的名称数组
var_dump($filteredY); // 输出对应的数据数组

在上面的示例代码中,我们使用array_filter函数通过回调函数$callback筛选出以J1-开头的名称,并将结果保存在$filteredX$filteredY中。然后,我们使用array_values函数将结果转换为索引数组,以便获取数组中的数据。最后,我们通过var_dump函数输出结果。

注意:在示例代码中,$part2数组是模拟你提供的数据。你需要将这部分代码替换为你实际的数组数据。