2013-12-17 3 views
0

ОК, так что я получил массив, который выглядит следующим образомзаписи базы данных записи из многомерного массива

Array 
(
[0] => stdClass Object 
    (
     [ipID] => 1 
     [countryID] => 13 
     [beginIP] => 1.0.0.0 
     [endIP] => 1.0.0.255 
     [netMask] => 24 
     [beginIPNum] => 16777216 
     [endIPNum] => 16777471 
    ) 

[1] => stdClass Object 
    (
     [ipID] => 2 
     [countryID] => 44 
     [beginIP] => 1.0.1.0 
     [endIP] => 1.0.1.255 
     [netMask] => 24 
     [beginIPNum] => 16777472 
     [endIPNum] => 16777727 
    ) 

[2] => stdClass Object 
    (
     [ipID] => 3 
     [countryID] => 44 
     [beginIP] => 1.0.2.0 
     [endIP] => 1.0.3.255 
     [netMask] => 23 
     [beginIPNum] => 16777728 
     [endIPNum] => 16778239 
    ) 
) 

Теперь я хочу, чтобы каждый набор данных (IPID, CountryId и т.д.) и написать каждый в база данных, но я застрял

Как получить каждый набор данных?

foreach($data as $ipRecord) { 

     $a = array(); 
     $a['ipID'] = $ipRecord['ipID']; 
     $a['countryID'] = $ipRecord['countryID']; 

     echo $a; 

    } 

Использование выше бросает фатальную ошибку: Не удается использовать объект типа StdClass как массив

+0

Ваша ошибка является результатом вы пытаетесь получить доступ к объекту в виде массива. Вместо этого вам нужно использовать формат '$ ipRecord-> ipID'. – Julio

ответ

2

Вы должны мешать, потому что это stdClass.

foreach($Array as $key => $value) 
{ 
    $ipID = $value->ipID; 
    $etc = $value->etc; 
    $countryID = $value->countryID; 

    // bla bla 
} 
1

Предполагая, что вы используете PHP здесь, вы могли бы использовать forEach:

forEach($arr as $item) { 
    // Run your database insertion here 
} 

См: http://www.php.net/manual/en/control-structures.foreach.php

В принципе, просто обращайтесь к элементам в вашем массиве индивидуально и выполняйте на них соответствующие операции с базой данных.

Однако, честно говоря, это будет зависеть от языка и базы данных, которую вы используете.

+0

yes Я использую php, я получаю эту ошибку, когда пытаюсь выполнить приведенную выше фатальную ошибку: нельзя использовать объект типа stdClass как массив – Rich

+1

@Rich yea вы не можете использовать свой объект в качестве массива. Вам нужно передать фактический массив, а затем взаимодействовать с вашим объектом в '$ item' (или как вы его называли). Кроме того, вы можете просто использовать 'for-loop' для доступа к данным. – Julio

+0

в виду, что это многомерный массив, и выше будет возвращено 3 отдельных массива –

1

Возможно, вы не понимаете разницы между массивами и объектами.

Способ доступа Массивы

$foo["key"] 

Способ доступа свойства класса (т.е. StdClass)

$foo->key 
Смежные вопросы