Прокручивать массив в массиве php для получения значений

У меня есть массив внутри массива, и я хочу перебрать массив, чтобы получить значения, чтобы я мог сохранить их в базе данных. Каков наилучший способ приблизиться к этому в PHP?

Массив:

Array
(
[instrument] => AUD_CAD
[granularity] => H1
[candles] => Array
(
[0] => Array
(
[complete] => 1
[volume] => 942
[time] => 2018-06-03T21:00:00.000000000Z
[bid] => Array
(
[o] => 0.97957
[h] => 0.98054
[l] => 0.97957
[c] => 0.98048
)

[mid] => Array
(
[o] => 0.98032
[h] => 0.98083
[l] => 0.98022
[c] => 0.98076
)

[ask] => Array
(
[o] => 0.98107
[h] => 0.98133
[l] => 0.98050
[c] => 0.98105
)

)

[1] => Array
(
[complete] => 1
[volume] => 888
[time] => 2018-06-03T22:00:00.000000000Z
[bid] => Array
(
[o] => 0.98048
[h] => 0.98069
[l] => 0.97972
[c] => 0.97986
)

[mid] => Array
(
[o] => 0.98077
[h] => 0.98093
[l] => 0.97989
[c] => 0.97998
)

[ask] => Array
(
[o] => 0.98106
[h] => 0.98124
[l] => 0.98000
[c] => 0.98011
)

)
)
)

Я хочу получить такие значения:

foreach ($get_instruments_candles['candles'] as $candle) {
// first array part
$instrument = $candle['instrument'];
$granularity = $candle['granularity'];

// one level deeper into the array
$complete = $candle[0]['complete'];
$volume = $candle[0]['volume'];

//another level deeper
$open = $candle[0]['mid']['o'];
$high = $candle[0]['mid']['h'];
$low = $candle[0]['mid']['l'];
$close = $candle[0]['mid']['c'];

// check if exists in db
// do a check here or insert data
echo 'insert in db  ins= '. $instrument. ' gran='. $granularity .' com= '. $complete .' open =' .$open. ' high = ' . $high . ' low = ' . $low . ' close = ' . $close;
}

Этот массив может содержать, скажем, 500 [свечей] 0,1,2,3 — 500 и т. Д. Я хочу сохранить значения в переменных, чтобы я мог проверить свою базу данных, чтобы проверить, существует ли, или затем использовать значения для вставки базы данных для каждый конкретный [массив свечей] значений. time, o, h, l а также c будучи важной частью данных.

-1

Решение

Вы близки. Тем не менее, вы ссылаетесь на некоторые из ваших индексов массива неправильно.

Давайте разбить это на две части. Во-первых, давайте просто сконденсируем ваши данные в красивый массив, который вы позже сможете использовать для своих запросов.

Шаг 1:

foreach ($get_instruments_candles['candles'] as $candle) {

//Create an array containing just the information that you want for each item.
$newArray[] = array(

'ins'     => $get_instruments_candles['instrument'],
'gran'    => $get_instruments_candles['granularity'],
'com'     => $candle['complete'],
'volume'  => $candle['volume'],
'open'    => $candle['mid']['o'],
'high'    => $candle['mid']['h'],
'low'     => $candle['mid']['l'],
'close'   => $candle['mid']['c']

);

}

echo '<pre>';
print_r($newArray);
echo '</pre>';

Теперь у вас есть массив, содержащий только информацию, которую вы хотите для каждого элемента.

Шаг 2:

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

//Here is an example of an parameterized insert query.
$query = "INSERT INTO YOURTABLE
(
ins,
gran,
com,
volume,
open,
high,
low,
close
) VALUES (?,?,?,?,?,?,?,?)";


//Use a loop and iterate across your items and execute your query for each item.
foreach($newArray as $item){

$stmt = $connection->prepare($query);
$stmt->bind_param('ssssssss', ...$item);
$stmt->execute();

}

$stmt->close();

Если вы новичок в параметризованных запросах, вам следует прочитать эту ссылку.

MySQLi Параметризованные Запросы

У них также есть один для PDO

PDO параметризованные запросы

Добавьте их в закладки и обращайтесь к ним часто. Они также покажут вам, как правильно настроить соединения с БД.

Надеюсь это поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector