Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 - Fatal编程技术网

Php 操纵数组

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,

我正在使用这段代码生成数组。这是一个while循环,在该循环中,
$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的,你能告诉我如何改变这个概念吗?为什么要对这个问题进行否决表决?很好,就是这样。如此简单和整洁!非常感谢你!