2016-12-13 7 views
1

私はPHPを使い始めたので、ここでは簡単なものを見落とす可能性があります。

私のスクリプトが何をするかの概要:CSVファイルを格納Interprest

  • 各行のアレイ($line)など。
  • 配列$lineをループし、配列が空でない場合は、指定されたキーの結果を文字列($csv_product_list)として格納します。
  • Magentoデータベースから製品SKUのリストを取得し、配列($sku)として格納します。

私はその後$skuの値が文字列$csv_product_list内に存在するかどうかをチェックしながら$sku配列をループにしようとしています。問題は、値の場合でも同じ結果が受信されていることです。文字列には$csv_product_listが含まれています。私が使用しています。この検証のために:

if (strpos($csv_product_list, $sku[$s] !== false)) { 
    echo '<b>', $sku[$s], '</b> does exist within <b>$csv_product_list</b><br>'; 
} else { 
    echo '<b>', $sku[$s], '</b> does not exist within <b>$csv_product_list</b><br>'; 
} 

を下のスクリーンショットでは、私は、出力$csv_product_listのと、その行の下に値が$skuの値の2のためのループが発生しているしています。

enter image description here

あなたが見ることができるように、CB853は、それはそれがないことを示す上記の結果にもかかわらず、$csv_product_list内に存在しないことによるれます。

CB967$csv_product_listに存在しませんので、このスクリプトが正常に動作している場合は結果が異なるはずです。

ここで何が間違っているかについて誰でも洞察力を提供できますか?私の完全なコードは、必要な明確化のために以下に含まれています。あなたの時間のために非常に前もってありがとう。あなたはそれを正しく使用していない

<?php 
/** GLOBAL VARIABLES (START) */ 
    $client = new SoapClient('***'); // Magento API URL. 
    $session_id = $client->login('***', '***'); // Standard API 'User Name' and 'API Key'. 
/** GLOBAL VARIABLES (END) **/ 

/** CSV (START) */ 
    $csv = array(); // ? 
    $line = array(); // ? 
    // ? 
    if (FALSE !== $handle = fopen("test.csv", "r")) { 
     while (FALSE !== $row = fgetcsv($handle)) { 
      $csv[] = $row; 
     } 
    } 
    // ? 
    foreach (array_slice($csv, 1) as $row) { 
     $new_row = array(); 
     for ($i = 0, $c = count($csv[0]); $i < $c; ++$i) { 
      $new_row[$csv[0][$i]] = $row[$i]; 
     } 
     $line[] = $new_row; 
    } 
/** CSV (END) */ 

/** CSV SKU CONVERSION (START) */ 
    $csv_product_list = ''; // Create $csv_product_list variable before results of the loop are added. 

    // Loop through each CSV row and assign the results to $csv_product_list. 
    foreach ($line as $iLineNumber => $data_line) { 
     $data_line_without_change = $data_line; 

     if (!empty($data_line['Product SKU'])) { 
       $csv_product_list .= $data_line['Product SKU'] . ' '; 
     } 
    } 
/** CSV SKU CONVERSION (END) */ 

/** ZOEY PRODUCTS (START) */ 
    // Filter for where the 'FMA Stock' attribute is set to 'Yes'. 
    $fma_stock_filter = array('complex_filter'=> 
     array(
      array('key'=>'fma_stock', 'value'=>array('key' =>'eq', 'value' => 'Yes')), 
     ), 
    ); 
    // Retrieve list of products using the filter and assign the result to $zoey_product_list. 
    $zoey_product_list = $client->catalogProductList($session_id, $fma_stock_filter); 

    // Convert the result from $zoey_product_list into an array of SKU's as $sku. 
    $sku = []; 
    foreach ($zoey_product_list as $item) { 
     $sku[] = $item->sku; 
    } 
/** ZOEY PRODUCTS (END) */ 

    echo 'The current contents of <b>$csv_product_list</b> are ', $csv_product_list, '<br><br>'; 

/*** DISABLE PRODUCTS (START) */ 
    for ($s = 0; $s < count($sku); $s++) { 
     if (strpos($csv_product_list, $sku[$s] !== false)) { 
      echo '<b>', $sku[$s], '</b> does exist within <b>$csv_product_list</b><br>'; 
     } else { 
      echo '<b>', $sku[$s], '</b> does not exist within <b>$csv_product_list</b><br>'; 
     } 
    } 
/*** DISABLE PRODUCTS (END) */ 
?> 

答えて

2

if (strpos($csv_product_list, $sku[$s] !== false)) { 
               ^this is wrong 

$sku[$s] !== falseの結果は、trueまたはfalseブール値であるので、あなたはブール値が$csv_product_listに存在するかどうかをチェックしています。

あなたが必要です:

if (strpos($csv_product_list, $sku[$s]) !== false) { 
            ^here 
+2

私は私の目が検査を受ける必要があり、私のメガネは何とんでもない間違い、うわ – RiggsFolly

+1

を置き換えます。私は最初 '' ''の最後から '' 'を逃してしまったので、エラーを修正するために2つをそこに置かなければならないと思った。ありがとうございました。 –

+1

@RiggsFolly質問タイトルは役に立ちました:-) – jeroen

関連する問題