парсинг / поиск массива beastly, заполненного простыми объектами xml в php - PullRequest
0 голосов
/ 23 октября 2010

Итак, я работаю над классом синтаксического анализа Excel xml и пытаюсь найти массив значений заголовка файла, чтобы вернуть целое число ключа.Если я могу получить ключ int, то я могу получить весь столбец по значению заголовка в файле.Я пытался использовать in_array, search_array и кучу других функций, но, похоже, ничего не работает.Вот массив, с которым я работаю

array(30) { [0]=> array(1) { ["Data"]=> object(SimpleXMLElement)#37 (1) { [0]=> string(6) "Item #" } } [1]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#38 (0) { } } [2]=> array(1) { ["Data"]=> object(SimpleXMLElement)#39 (1) { [0]=> string(5) "Style" } } [3]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#40 (0) { } } [4]=> array(1) { ["Data"]=> object(SimpleXMLElement)#41 (1) { [0]=> string(5) "Brand" } } [5]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#42 (0) { } } [6]=> array(1) { ["Data"]=> object(SimpleXMLElement)#43 (1) { [0]=> string(5) "Color" } } [7]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#44 (0) { } } [8]=> array(1) { ["Data"]=> object(SimpleXMLElement)#45 (1) { [0]=> string(4) "Size" } } [9]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#46 (0) { } } [10]=> array(1) { ["Data"]=> object(SimpleXMLElement)#47 (1) { [0]=> string(12) "Active Price" } } [11]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#48 (0) { } } [12]=> array(1) { ["Data"]=> object(SimpleXMLElement)#49 (1) { [0]=> string(6) "Gender" } } [13]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#50 (0) { } } [14]=> array(1) { ["Data"]=> object(SimpleXMLElement)#51 (1) { [0]=> string(4) "Cost" } } [15]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#52 (0) { } } [16]=> array(1) { ["Data"]=> object(SimpleXMLElement)#53 (1) { [0]=> string(11) "On-hand Qty" } } [17]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#54 (0) { } } [18]=> array(1) { ["Data"]=> object(SimpleXMLElement)#55 (1) { [0]=> string(9) "Dept Name" } } [19]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#56 (0) { } } [20]=> array(1) { ["Data"]=> object(SimpleXMLElement)#57 (1) { [0]=> string(15) "Color Full Name" } } [21]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#58 (0) { } } [22]=> array(1) { ["Data"]=> object(SimpleXMLElement)#59 (1) { [0]=> string(8) "ItemType" } } [23]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#60 (0) { } } [24]=> array(1) { ["Data"]=> object(SimpleXMLElement)#61 (1) { [0]=> string(3) "UPC" } } [25]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#62 (0) { } } [26]=> array(1) { ["Data"]=> object(SimpleXMLElement)#63 (1) { [0]=> string(6) "UPCNEW" } } [27]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#64 (0) { } } [28]=> array(1) { ["Data"]=> object(SimpleXMLElement)#65 (1) { [0]=> string(3) "MPN" } } [29]=> array(1) { ["NamedCell"]=> object(SimpleXMLElement)#66 (0) { } } } array(1) { ["Data"]=> object(SimpleXMLElement)#37 (1) { [0]=> string(6) "Item #" } } 

Итак, я просто пытаюсь, например, найти "Бренд" в этом массиве, чтобы вернуть ключ массива, который соответствует бренду (2)

1 Ответ

1 голос
/ 23 октября 2010

Трудно ответить на ваш вопрос, не увидев, что вы использовали для генерации вывода var_dump выше.

Мое лучшее предположение заключается в том, что эти данные выглядят примерно так:

$data = array(array("Data" => simplexml_load_string("<Tag>Brand</Tag>")));

Если это так, вы можете вернуть значение «Бренд», позвонив по номеру $data[0]["Data"]

Вы можете выполнить итерацию по массиву в поиске термина «Бренд», выполнив следующее:

$rowNum = 0;
$cellNum = 0;
foreach($data as $row){
    $rowNum++;
    foreach($row as $cellKey => $cellVal){
        $cellNum++;
        echo "Row $rowNum at cell $cellNum has key '$cellKey' and val '$cellVal'";
    }    
}

Будет выведено:

Row 1 at cell 1 has key 'Data' and val 'Brand'

С учетом вышесказанного Гордон, вероятно, прав, и существующая библиотека, такая как phpexcel, является, вероятно, менее болезненным способом сделать подобные вещи.

...