Php 操纵数组
我正在使用这段代码生成数组。这是一个while循环,在该循环中,Php 操纵数组,php,arrays,Php,Arrays,我正在使用这段代码生成数组。这是一个while循环,在该循环中,$povezani我获得了一个连接的SKU数组,该数组应该与数组$transfer\u项合并,但方式与我在底部显示的方式相同。这样,我现在就有了它,但我没有得到我需要的结果。您能帮助我如何获得所需的阵列吗 $transfer_items= array(); //Get calculation items in array if($stmt = $conn -> prepare("SELECT article_no, mpc,
$povezani
我获得了一个连接的SKU数组,该数组应该与数组$transfer\u项合并,但方式与我在底部显示的方式相同。这样,我现在就有了它,但我没有得到我需要的结果。您能帮助我如何获得所需的阵列吗
$transfer_items= array();
//Get calculation items in array
if($stmt = $conn -> prepare("SELECT article_no, mpc, vpc FROM dpb.calculation_items WHERE calculation_id = ? AND used_for_purchase = 1")) {
$stmt -> bind_param("i", $calculation_id);
$stmt -> execute();
$stmt -> store_result();
$stmt -> bind_result($article_no, $mpc, $vpc);
while($stmt -> fetch()) {
$povezani = zamjena_broja($article_no);
$transfer_items[] = array('article_no' => $povezani,
'mpc' => $mpc,
'vpc' => $vpc);
}
$stmt -> close();
}
这是我得到的结果:
array (size=6)
0 =>
array (size=3)
'article_no' => string '967 65 02-16' (length=12)
'mpc' => string '33000.00' (length=8)
'vpc' => string '26400.00' (length=8)
1 =>
array (size=3)
'article_no' => string '967 66 57-02' (length=12)
'mpc' => string '35600.00' (length=8)
'vpc' => string '28480.00' (length=8)
2 =>
array (size=3)
'article_no' => string '967 32 96-01' (length=12)
'mpc' => string '7000.00' (length=7)
'vpc' => string '5600.00' (length=7)
3 =>
array (size=3)
'article_no' =>
array (size=2)
0 => string '952 71 57-52' (length=12)
1 => string '952 71 57-58' (length=12)
'mpc' => string '1950.00' (length=7)
'vpc' => string '1560.00' (length=7)
4 =>
array (size=3)
'article_no' => string '966 62 89-01' (length=12)
'mpc' => string '5500.00' (length=7)
'vpc' => string '4400.00' (length=7)
5 =>
array (size=3)
'article_no' => string '967 32 96-01' (length=12)
'mpc' => string '7000.00' (length=7)
'vpc' => string '5600.00' (length=7)
给我带来问题的结果是数组3,它应该是这样的:
3 =>
array (size=3)
'article_no' => string '952 71 57-52' (length=12)
'mpc' => string '1950.00' (length=7)
'vpc' => string '1560.00' (length=7)
4 =>
array (size=3)
'article_no' => string '952 71 57-58' (length=12)
'mpc' => string '1950.00' (length=7)
'vpc' => string '1560.00' (length=7)
如何从位置3的阵列中提取子阵列,并获得上面显示的所需结果
zamjena_broja函数
function zamjena_broja($kataloski_broj){
global $conn;
include("db_conn.php");
$kataloski_broj_data = array();
//Traženje zamjenskog broja
$upit_zamjena = "SELECT pocetni_broj, zamjenski_broj, glavni_broj
FROM dpb.nav_replacement_numbers
WHERE glavni_broj = '$kataloski_broj'
OR pocetni_broj = '$kataloski_broj'";
$rezultat_zamjena = mysqli_query($conn, $upit_zamjena) or die (mysqli_error($conn));
$broj = mysqli_num_rows($rezultat_zamjena);
while($row = mysqli_fetch_array($rezultat_zamjena)){
$kataloski_broj_data[] = $row["zamjenski_broj"];
$kataloski_broj_data[] = $row["pocetni_broj"];
}
if ($broj > 0) {
$kataloski_broj = array_map("unserialize", array_unique(array_map("serialize", $kataloski_broj_data)));
//var_dump($kataloski_broj);
} else {
$kataloski_broj;
}
return $kataloski_broj;
}
由于函数
zamjena_broja
可以返回一个数组,因此需要在while循环中处理该数组
while($stmt -> fetch()) {
$povezani = zamjena_broja($article_no);
if ( is_array($povezani) ) {
foreach ($povezani as $one) {
$transfer_items[] = array('article_no' => $one,
'mpc' => $mpc,
'vpc' => $vpc);
}
} else {
$transfer_items[] = array('article_no' => $one,
'mpc' => $mpc,
'vpc' => $vpc);
}
}
根据以上答案,您可以尝试使用
array\u map
来实现:
$merge_arr = ['mpc' => $mpc, 'vpc' => $vpc];
array_map(function($val) use (&$transfer_items, $merge_arr) {
$transfer_items[] = array_merge(['article_no' => $val] ,$merge_arr);
}, is_array($povezani) ? $povezani : [$povezani]);
请向我们展示函数
zamjena_broja
不使用易位名称函数以及更多此代码。具体来说,你是如何将值从fetch绑定到variablesOK的,你能告诉我如何改变这个概念吗?为什么要对这个问题进行否决表决?很好,就是这样。如此简单和整洁!非常感谢你!