Можно ли добавить php-код в массив? Попытка рандомизировать порядок динамической лизи - PullRequest
0 голосов
/ 26 марта 2011

UPDATE Сожалею. Я не был так ясен, как мне нужно, я думаю. Я в основном пытаюсь вставить больше, чем текстовую строку. Функция в WordPress и извлекает HTML-код из панели инструментов для рекламы.

   <ul id="randomOrderList">
        <li><?php if (function_exists('dfrads')) { echo dfrads('1'); } ?></li>
        <li><?php if (function_exists('dfrads')) { echo dfrads('2'); } ?></li>
        <li><?php if (function_exists('dfrads')) { echo dfrads('3'); } ?></li>
    </ul>

К этому:

<ul id="randomOrderList">
    <li><a href="" title=""><img  src="name" alt=" " /></a></li>
    <li><a href="" title=""><img  src="name" alt=" " /></a></li>
    <li><a href="" title=""><img  src="name" alt=" " /></a></li>
</ul>

Я пробовал это, но я не уверен, как добавить php в массив:

<?
  $array=array('<?php if (function_exists('dfrads')) { echo dfrads('1'); } ?>','<?php if (function_exists('dfrads')) { echo dfrads('2'); } ?>','<?php if (function_exists('dfrads')) { echo dfrads('3'); } ?>');
  shuffle($array);
  $array = array_chunk($array, 5);
  foreach($array as $section){
    echo '<ul id="randomOrderList">'."\n";
    foreach($section as $link){
      echo ' <li>'.$link.'</li>'."\n";
    }
    echo '</ul>'."\n";
  }
?>

Ответы [ 2 ]

2 голосов
/ 26 марта 2011
$list = array('something 1', 'something 2', 'something 3');
shuffle($list);

echo '<ul>';
foreach ($list as $item) {
    echo '<li>' . htmlspecialchars($item) . '</li>';
}
echo '</ul>';
1 голос
/ 26 марта 2011

Вы можете поместить ваши строки в массив:

$strings = array(
    'something 1', 
    'something 2', 
    'something 3', 
);

Без какого-либо кода - , который там не разрешен.


Затем используйте функцию shuffle(), чтобы рандомизировать массив:

shuffle($strings);


И, теперь, переберите массив, чтобы отобразить элементы:

echo '<ul id="randomOrderList">';
foreach ($strings as $string) {
    echo '<li>' . $string . '</li>';
}
echo '</ul>';


Они будут отображаться в случайном порядке.


Редактировать после редактирования вопроса: вы можете создать массив, вызвав вашфункция, конечно.

Например, вы можете использовать что-то вроде этого:

$strings = array(
    dfrads('1'), 
    dfrads('2'), 
    dfrads('3'), 
);

При необходимости вы можете включить весь свой код в тест на наличие dfradsфункция:

if (function_exists('dfrads')) {
    // Create the array
    // randomize it with shuffle
    // do the loop and the echos
}
...