Настройка массива PHP из переменной - PullRequest
0 голосов
/ 02 ноября 2011

У меня есть список элементов, которые я хочу передать в API через массив, но он построен из отдельного объекта.Я думал, что мог бы перебрать элементы в объекте, чтобы создать переменную, которую я мог бы затем передать массиву, но что-то отключилось.Это, вероятно, легче увидеть, чем объяснить.

Я использую следующий код:

//Set up the parser object                                                              
$parser = new XMLParser($xml);                                                                    
$parser->Parse();

$skuList = '';
// Pull the inventory of the requested SKUs from Magento for comparison later           
foreach($parser->document->product as $product)
{
  $skuList .= "'" . $product->sku[0]->tagData . "',";
}
echo $skuList;
print_r( $proxy->call($sessionId, 'product_stock.list', array(array($skuList))));

Если я запускаю это в командной строке, я получаю

'1DAFPOT5','8GAIL','26BULK30',Array
(
)

Теперь, если я изменю строку print_r, поместив содержимое переменной непосредственно в вызов, как это

print_r( $proxy->call($sessionId, 'product_stock.list', array(array('1DAFPOT5','8GAIL','26BULK30', ))));

Я получу этот вывод, который я ищу

'1DAFPOT5','8GAIL','26BULK30',Array
(
[0] => Array
    (
        [product_id] => 2154
        [sku] => 26BULK30
        [qty] => 19.0000
        [is_in_stock] => 1
    )

[1] => Array
    (
        [product_id] => 2255
        [sku] => 8GAIL
        [qty] => 16.0000
        [is_in_stock] => 1
    )

[2] => Array
    (
        [product_id] => 2270
        [sku] => 1DAFPOT5
        [qty] => 23.0000
        [is_in_stock] => 1
    )

)

Я неправильно строю переменную или мне нужно передать ее в массив по-другому?

1 Ответ

1 голос
/ 02 ноября 2011

$ skuList выглядит как массив, но все еще является строкой. Вы должны сделать это после цикла foreach:

$skuList = explode(',',$skulist);

Или, лучше, сделать skuList массивом с начала:

$skuList = array();
foreach($parser->document->product as $product)
{
  $skuList[] = $product->sku[0]->tagData;
}
print_r( $proxy->call($sessionId, 'product_stock.list', array($skuList)));

http://www.php.net/manual/en/function.explode.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...