【问题标题】:How to retrieve a value from my php array?如何从我的 php 数组中检索一个值?
【发布时间】:2020-02-12 15:38:23
【问题描述】:

我的查询给了我一个数组结果:

$donnnes =

Array ( [0] => Array ( [sku_code] => A1101_0090_TU [SKU_EAN] => 9346799868270 ) ) 

我评论了我的变量的 var_dump 给了我什么,变量 SKU_EAN 给了我一个 NULL 值,当它在我的 csv 文件中读取 sku_code (A1101_0090_TU) 时如何恢复 SKU_EAN (9346799868270) 的值?

 $resultat = mysqli_query($bdd, "SELECT trim(concat(concat(SKU_ITEM_VARIANT,'_'),trim(SKU_SIZE)))as sku_code , SKU_EAN  FROM dwh_dev.dwh_d_sku"); 

    $donnees[] = mysqli_fetch_assoc($resultat); 
    print_r($donnees); //Array ( [0] => Array ( [sku_code] => A1101_0090_TU [SKU_EAN] => 9346799868270 ) ) 


    $constante = "MMXC1_";

    $temp2 = array_column($donnees, 'sku_code', 'SKU_EAN');
    var_dump($temp2); //array(1) { ["9346799868270"]=> string(13) "A1101_0090_TU"

            if (($handle = fopen("$nomcsv", "r")) !== FALSE) { 

                $firstLine = true;

                while (($data = fgetcsv($handle, 1000000, ";")) !== FALSE) 
                {   
                    if(!$firstLine) {

                        $sku_code = $data[6].'_'.$data[7].'_'.$data[8];
                        var_dump($sku_code); //A1101_0090_TU

                        $SKU_EAN = $temp2[$sku_code];
                        var_dump($SKU_EAN); //NULL

                        // Create line here and immediately add it to `$data_final`
                        $data_final[] = $constante.'|'.$SKU_EAN.'|'.$data[12].'|'.$data[13]; 
                     }
                     $firstLine = false;
                }   
            }


                     $cheminfile = "//alcyons/IT/PhotoShoot/retail/CSV/TXT_Finaux/MMX".date('His').".txt";

                    $fp = fopen("$cheminfile", "w");

                    $delimiter = ';';

                    fputcsv($fp, $data_final,  "\n");                              

                    fclose($fp);    

【问题讨论】:

  • 因为$temp2中没有这个元素($temp2[A1101_0090_TU])
  • 如何找回?
  • 要使用$temp2,您需要在$temp2 中使用这样的结构:Array ( [A1101_0090_TU] => 9346799868270 )

标签: php csv fputcsv


【解决方案1】:

需要更改函数array_column中的参数

使用这个

$temp2 = array_column($donnees,  'SKU_EAN', 'sku_code');
var_dump($temp2); //array(1) { ["A1101_0090_TU"]=> string(13) "9346799868270"}

代替

$temp2 = array_column($donnees, 'sku_code', 'SKU_EAN');

【讨论】:

  • 谢谢你的回答,但它只在我的txt文件中插入第一行,这正常吗?我希望每次我在我的 csv 中运行一个循环时他都会这样做。
  • 请检查数组$data_final中的数据。
  • var_dump($data_final) = array(1) { ["A1101_0090_TU"]=> string(13) "9346799868270" } array(1) { [0]=> string(26) "MMXC1_|A|9346799868270|0|0" } array(2) { [0]=> string(26) "MMXC1_|A|9346799868270|0|0" [1]=> string(13) "MMXC1_|A||0|0" }
  • 你需要循环 $data_final 数组。请查看修改后的答案。
  • 我有一个错误:警告:fputcsv() 期望参数 2 是数组,字符串中给出...
猜你喜欢
  • 2012-01-27
  • 2013-06-22
  • 1970-01-01
  • 2017-02-11
  • 2015-08-26
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多