#php #arrays
#php #массивы
Вопрос:
будучи новичком в php, я не могу понять, как использовать if else
внутри php array. я пытался сделать что-то вроде этого
function column_title($item){
$status=false;
if($item->uTestimonials_approval =='0')
$status=false;
else
$status=true;
//Build row actions
$actions = array(
$status ? 'unapprove' => sprintf('<a href="?page=%samp;action=%samp;id=%s">Unapprove</a>',$_REQUEST['page'],'unapprove',$item-> uTestimonials_id),:
'approve1' => sprintf('<a href="?page=%samp;action=%samp;id=%s">Approve</a>',$_REQUEST['page'],'approve',$item-> uTestimonials_id),
'delete' => sprintf('<a href="?page=%samp;action=%samp;id=%s">Delete</a>',$_REQUEST['page'],'delete',$item-> uTestimonials_id),
);
//Return the title contents
return sprintf('%1$s <span style="color:silver">(id:%2$s)</span>%3$s',
/*$1%s*/ $item-> uTestimonials_message,
/*$2%s*/ $item-> uTestimonials_id,
/*$3%s*/ $this->row_actions($actions)
);
}
но я получаю следующее исключение при разборе
Parse error: syntax error, unexpected T_DOUBLE_ARROW
может ли кто-нибудь помочь мне найти, что именно я делаю неправильно, заранее спасибо
Я прекрасно отношусь к отрицательному голосованию, но всегда лучше указать, почему кто-то это сделал, чтобы этот человек мог улучшить себя
Комментарии:
1. Что вы намеревались сделать, выполнив $status ? ‘не одобрять’?
2. @Jeune я работаю над некоторыми функциями WordPress и, основываясь на статусе утверждения, мне нужно показать определенный текст для использования, поэтому я использую это.
3. Чтобы вы знали, весь ваш код, со всем этим sprintf и ternary, крайне нечитаемым
Ответ №1:
Вы не можете сделать это для значения ключа:
$status ? 'unapprove'
Попробуйте что-то вроде этого вместо:
//Build row actions
$ap = 'approve';
$key = 'approve1';
if($status){
$ap = 'unapprove';
$key = 'unapprove';
}
$actions = array(
$key => sprintf('<a href="?page=%samp;action=%samp;id=%s">'.$ap.'</a>',$_REQUEST['page'],$ap,$item-> uTestimonials_id),:
'delete' => sprintf('<a href="?page=%samp;action=%samp;id=%s">Delete</a>',$_REQUEST['page'],'delete',$item-> uTestimonials_id),
);
Комментарии:
1. любая идея, как я могу достичь желаемого, поскольку я должен использовать ключ и значение против него
2. @user как насчет обычной установки переменной if перед кодом определения массива, а?
3. @Coll .Shrapnel Я добавил это ^_^
4. Нет необходимости делать это, вы можете использовать сокращенную запись для ключа массива. Он просто не указал его часть else, поэтому он выдавал ошибку.
5. @Interstellar_Coder посмотрите на код операции, else было указано, но не в том месте.
Ответ №2:
Вы не можете сделать это внутри определения массива.
Вместо этого вы могли бы добавить их в массив после определения следующим образом:
$actions = array(
'delete' => sprintf('<a href="?page=%samp;action=%samp;id=%s">Delete</a>',$_REQUEST['page'],'delete',$item-> uTestimonials_id),
);
if ($status) {
$actions['unapprove'] = sprintf('<a href="?page=%samp;action=%samp;id=%s">Unapprove</a>',$_REQUEST['page'],'unapprove',$item-> uTestimonials_id);
}
else {
$actions['approve'] = sprintf('<a href="?page=%samp;action=%samp;id=%s">Approve</a>',$_REQUEST['page'],'approve',$item-> uTestimonials_id);
}