как подставить значение массива

Мне нужно получить первые два символа из:

$node->field_email_body['und'][0]['value']; //there are like 200 - 300 characters

Я пытаюсь пойти с:

$bodyemail = substr($node->field_email_body['und'][0]['value'], 0, 2);

и это не работает.
Тогда мне нужно сделать что-то вроде этого:

if ($bodyemail == 'ok') {
    drupal_set_message ('done');
}
else {
    drupal_set_message ('not done');
}

Я знаю, что это массив... и substr работает со строкой. но я действительно не знаю, как это сделать по-другому. Гугл не помог.


person Forey Vitaliy    schedule 24.12.2012    source источник
comment
Почему это не работает? Что вам дает var_dump($node->field_email_body['und'][0]['value'])?   -  person Salman A    schedule 24.12.2012
comment
Обратите внимание на print_r($node-›field_email_body).   -  person SaidbakR    schedule 24.12.2012
comment
$node->field_email_body['und'][0]['value'] это массив? gettype($node->field_email_body['und'][0]['value']);   -  person Jonathan de M.    schedule 24.12.2012


Ответы (2)


ваш код выглядит нормально.

я предлагаю установить эту позицию вашего массива в свою собственную переменную, а затем попробовать подставить ее. тогда вы можете эхо/логировать оба и посмотреть, на что они установлены.

person xero    schedule 24.12.2012

спасибо всем за вашу помощь и время. проблема была в моем коде... в последней строке с 'drupal_set_message' я забыл поставить ')' и подумал, что моя проблема связана с 'substr'. теперь все в порядке.

function driver_mailer_node_presave($node) { 
if ($node->type == 'mailhandler_source'){
drupal_set_message ('mailhandler node: ' .print_r($node->field_email_body['und'][0]['value'], true));
$string = $node->field_email_body['und'][0]['value'];
$bodyemail = substr($string, 0, 10);
drupal_set_message (print_r($bodyemail, true));
}
}
person Forey Vitaliy    schedule 25.12.2012