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_Extract - Fatal编程技术网

php从数组中提取值并作为参数传递给函数

php从数组中提取值并作为参数传递给函数,php,arrays,extract,Php,Arrays,Extract,如何提取[p\u id]值并在函数中作为参数传递 Array ( [0] => Array ( [p_name] => X-Dot Motorbike Helmet [p_id] => 1001 [p_price] => 1.60 [p_alt-variation-1] => Red ) [1] => Array

如何提取
[p\u id]
值并在函数中作为参数传递

Array
(
    [0] => Array
        (
            [p_name] => X-Dot Motorbike Helmet
            [p_id] => 1001
            [p_price] =>  1.60
            [p_alt-variation-1] => Red
        )

    [1] => Array
        (
            [p_name] => Salt and Lemon Candy
            [p_id] => 1002
            [p_price] => 1.20
        )

    [2] => Array
        (
            [p_name] => Romoss Rolink Hybrid Cable
            [p_id] => 1003
            [p_price] => 13.90
        )

)
例如,我需要将这些id传递到SQL语句的函数中:

function process($ids = array('1001','1002','1003')) {

    $sql = "SELECT * FROM tbl WHERE pid IN('1001','1002','1003') GROUP BY categoryId";

    ...

}
使用array_map()将所有ID放入$ids数组:

   $ids = array_map(function($v){return $v[p_id];}, $array);
然后可以将$ids数组作为函数的参数传递。

使用array\u map()将所有ID放入$ids数组:

   $ids = array_map(function($v){return $v[p_id];}, $array);

然后可以将$ids数组作为函数的参数传递。

假设
$array
是二维数组,在其上循环并将所有ID添加到另一个数组,然后将其作为参数传递

$ids = array(); // Declare array which will contain IDs
foreach ($array as $value) {
    // Loop over array, and get the IDs, put it into your $ids array
    $ids[] = $value['p_id'];
}

// Pass it as an argument
process($ids);
然后需要调整查询,因为它当前是静态的。使用
内爆()
将数组生成字符串,如下所示

function process($ids = array() {
    $sql = "SELECT * FROM tbl WHERE pid IN('".implode("', '", $ids)."') GROUP BY categoryId";

    ...
}

假设
$array
是二维数组,在其上循环并将所有ID添加到另一个数组中,并将其作为参数传递

$ids = array(); // Declare array which will contain IDs
foreach ($array as $value) {
    // Loop over array, and get the IDs, put it into your $ids array
    $ids[] = $value['p_id'];
}

// Pass it as an argument
process($ids);
然后需要调整查询,因为它当前是静态的。使用
内爆()
将数组生成字符串,如下所示

function process($ids = array() {
    $sql = "SELECT * FROM tbl WHERE pid IN('".implode("', '", $ids)."') GROUP BY categoryId";

    ...
}

使用
array\u column
内爆
功能的解决方案:

// $data is your initial array
$ids = array_column($data, 'p_id');

function process($ids = []) {
    if (!empty($ids)) {
        $sql = "SELECT * FROM tbl WHERE pid IN(".implode(", ", $ids).") GROUP BY categoryId";
    } 

    ...

}

使用
array\u column
内爆
功能的解决方案:

// $data is your initial array
$ids = array_column($data, 'p_id');

function process($ids = []) {
    if (!empty($ids)) {
        $sql = "SELECT * FROM tbl WHERE pid IN(".implode(", ", $ids).") GROUP BY categoryId";
    } 

    ...

}
  • 首先使用
    array\u column
    (即:)从p\u id中提取值

  • 然后你可以把$value传递给你的函数

    process($value);
    
  • 在将数组传递到sql之前,先在函数中对其进行内爆

    function process($value = array()) {
        $value = "'".implode("', '", $value)."'";
        $sql = "SELECT * FROM tbl WHERE pid IN({$value}) GROUP BY categoryId";
    }
    
  • 首先使用
    array\u column
    (即:)从p\u id中提取值

  • 然后你可以把$value传递给你的函数

    process($value);
    
  • 在将数组传递到sql之前,先在函数中对其进行内爆

    function process($value = array()) {
        $value = "'".implode("', '", $value)."'";
        $sql = "SELECT * FROM tbl WHERE pid IN({$value}) GROUP BY categoryId";
    }
    

  • 谢谢,但是如何为这些内爆id添加单引号?我用字符串周围的引号更新了我的答案。简单地说,您可以在
    内爆()前后添加引号,然后在调用时将其用作“粘合”的一部分。如果ID是整数,则不需要在其周围加引号。除非它们是字符串。不过更好的是,只使用准备好的语句。谢谢,但是如何为这些内爆id添加单引号?我用字符串周围的引号更新了我的答案。简单地说,您可以在
    内爆()前后添加引号,然后在调用时将其用作“粘合”的一部分。如果ID是整数,则不需要在其周围加引号。除非它们是字符串。但更好的是,只使用准备好的语句。