私は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のためのループが発生しているしています。
あなたが見ることができるように、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) */
?>
私は私の目が検査を受ける必要があり、私のメガネは何とんでもない間違い、うわ – RiggsFolly
を置き換えます。私は最初 '' ''の最後から '' 'を逃してしまったので、エラーを修正するために2つをそこに置かなければならないと思った。ありがとうございました。 –
@RiggsFolly質問タイトルは役に立ちました:-) – jeroen