2015-10-21 3 views
-1

Я следую сомнениям, имею дату в строковом формате, включил его в формате даты php, а затем превратился в многомерный массив, но индексы массива всегда одни и те же, все внутри, пример ниже.индексы постоянного массива

$string = "20102015"; 
$timezone = new DateTimeZone('UTC'); 
$dateTime = DateTime::createFromFormat('dmY', $string, $timezone); 
$arr = array($dateTime->format('d/m/Y')); 
print_r($arr); 

/* Result: 
Array ([0] => 23/10/2015) 
Array ([0] => 22/11/2015) 
Array ([0] => 21/11/2015) 
Array ([0] => 15/10/2015) 
Array ([0] => 29/10/2015) 
*/ 
+0

Вы создаете только один массив, с одним значением. Поделитесь своим вопросом, что вы получаете. – Evert

ответ

0

$arr = array($dateTime->format('d/m/y)); будет присвоить новое значение в $ обр, т.е. не добавляя туда.

Если вы поместите это в цикл while, вы просто повторяете задание.

Если вы пытаетесь создать список дат, попробуйте вместо этого:

$arr = []; 
while(...) { 
    $string = "20102015"; // I assume something changes this in the loop 
    $timezone = new DateTimeZone('UTC'); 
    $dateTime = DateTime::createFromFormat('dmY', $string, $timezone); 
    $arr[] = $dateTime->format('d/m/Y'); 
} 
0

Это потому, что вы только принимает одно значение строки даты и приведения его в виде массива (который дает численно индексированный массив с одним значением в нем, а не многомерный массив).

Вы делаете это одинаково с каждой итерацией. Каждый раз, когда вы передаете строку в один массив элементов. Индекс этой строки в массиве будет 0 каждый раз.

Если вы пытаетесь построить массив всех значений из каждой итерации вы, вероятно, после того, как это:

// assign value to next index in existing array 
$arr[] = $dateTime->format('d/m/Y'); 
Смежные вопросы