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中提取值
process($value);
function process($value = array()) {
$value = "'".implode("', '", $value)."'";
$sql = "SELECT * FROM tbl WHERE pid IN({$value}) GROUP BY categoryId";
}
array\u column
(即:)从p\u id中提取值
process($value);
function process($value = array()) {
$value = "'".implode("', '", $value)."'";
$sql = "SELECT * FROM tbl WHERE pid IN({$value}) GROUP BY categoryId";
}
谢谢,但是如何为这些内爆id添加单引号?我用字符串周围的引号更新了我的答案。简单地说,您可以在
内爆()前后添加引号,然后在调用时将其用作“粘合”的一部分。如果ID是整数,则不需要在其周围加引号。除非它们是字符串。不过更好的是,只使用准备好的语句。谢谢,但是如何为这些内爆id添加单引号?我用字符串周围的引号更新了我的答案。简单地说,您可以在内爆()前后添加引号,然后在调用时将其用作“粘合”的一部分。如果ID是整数,则不需要在其周围加引号。除非它们是字符串。但更好的是,只使用准备好的语句。