2015-02-03 3 views
0

Я думал, что это непростая задача, но, видимо, нет.Назначить значение массива переменной в PHP

$dom = new DOMDocument(); 
    $dom->loadHTMLFile("myhtml.html"); 
    $timestamp = $dom->getElementById('timestamp'); 
    $timestamp = $dom->saveHTML($timestamp); 
    $matches_out = array(); 
    if (preg_match_all('/<div id="timestamp">(.*)<\/div>/', $timestamp, $matches_out)) { 
    $timestamp = $matches_out[0]; 
    } 
    echo $timestamp; 

Мне нужно, чтобы получить значение из массива и сохранить его в переменной $timestamp. Когда я использую print_r(), я получаю Array ([0] =>1422936994). Я думал, что для того, чтобы получить свою временную метку, я просто делаю $matches_out[0], потому что я могу видеть ее прямо там, на нулевом индексе, или я что-то упускаю.

Попытки повторить это заставляет меня это: Notice: Array to string conversion in C:\xampp\htdocs\myscript.php on line 10

+0

я действительно не понимаю вопрос, но да, $ временных меток теперь массив, когда вы делаете эхо, он будет отображать ошибку – onegun

+0

, но я думал, что вы могли бы получить строку из массива с использованием индекса номер, см. здесь: http://stackoverflow.com/a/16876209 – LSD

+0

, если вы посмотрите на документацию preg_match_all(), тогда вы поймете, что $ matches_out - это массив всех совпадений в многомерном массиве, упорядоченный по флагам. поэтому, пожалуйста, не ожидайте, что $ matches_out [0] теперь является строкой – onegun

ответ

1

$matches_out - многомерный массив. Таким образом, ваш правильный код будет примерно $matches_out[0][0]. Проверьте ваш массив снова, чтобы убедиться, что вы получили правильное значение.

См preg_match_all

+0

Как сделать Я храню это значение в переменной, а не только для эха, но для выполнения математических операций? – LSD

+0

Используйте $ var_name = $ matches_out [0] [0]; – qtuan

1

$ временной метки является массивом. Таким образом, вместо

echo $timestamp; 

сделать

echo $timestamp[0]; 

И еще раз, если вы не хотите иметь индексы:

$newTimestamp = $timestamp[0]; 
echo $newTimestamp; 
0

Вы звоните неправильную деталь, то временная метка переменные имеют стать массивом называть его таким же образом, как этот

$timestamp[0] 
+0

есть способ присвоить этому, $ timestamp [0] фактической переменной, поэтому я могу избежать использования индексных номеров ...? Или, если я хочу сказать, выполнить математическую операцию в метке времени, я должен использовать, '$ myResult = $ timestamp [0] - 100;' , потому что выше только что меня достает '-100' – LSD

Смежные вопросы