Доступ к элементу массива

lostbananan

Новичок
Вот весь код:
$str = "Я {самый|очень} хороший {программист|programmer} {самый|очень}";
preg_match_all('/\{([^{}]*?)\}/', $str, $found);
echo "<pre>"; print_r($found); echo "</pre><hr>";
/* for($i=0; count($found); $i++){
echo "<b>$found[$i]</b><br>";
}*/
echo "<table bgcolor='#000000' width='100%'>";
echo "<tr><td></td></tr>";
echo "</table>";
echo '$found[1][0]'.$found[1][0]."<br>";
echo '$found[1][1]'.$found[1][1]."<br>";
echo '$found[1][2]'.$found[1][2]."<br>";
echo 'count($found[1])'.count($found[1])."<br>";
echo "<table bgcolor='#000000' width='100%'>";
echo "<tr><td></td></tr>";
echo "</table>";
echo "Оюходимо масив у циклі<br>";
for ($i=1; $i<count($found[$i]); $i++){
echo '$i='.$i."<br>";
for ($j=0; $j<count($found[$i]); $j++){
//echo '$j='.$j."<br>";
echo '$found[j] : '.$found[j].'<br/>';

$t = explode("|", $found[j]);

var_dump($t);
/*for($q=0; $q<3; $q++){
echo '$q='.$q."-=-$arr[$q][0]<br>";
} */
}
}
echo "<br>Після циклу!<br>";
exit();
с помощью preg_match_all('/\{([^{}]*?)\}/', $str, $found); я получаю символы которые леэат между { и }. В данном случае 3 массива. Каждый из них надо разбить на массив состоящий из слов (слова разделены |)
Из строки Я {самый|очень} хороший {программист|programmer} {самый|очень} (например) надо получить строки заключенные в { и }. В этих строка - надо получить слова которые отделяются одно от другого знаком |
 

WMix

герр M:)ller
Партнер клуба
lostbananan
читать невозможно, не то что на вопросы отвечать. убери все лишнее не относящееся к теме (выводы табличек к примеру, ненужные коментарии) и оберни программный кусок bb-тэгами [ php ]. сосредоточь на основной проблеме.

ЗЫ
PHP:
echo "<table bgcolor='#000000' width='100%'>";
echo "<tr><td></td></tr>";
echo "</table>";
это пишут так
PHP:
<hr />
 

lostbananan

Новичок
PHP:
$str = "Я {самый|очень} хороший {программист|programmer} {самый|очень}"; 
  preg_match_all('/\{([^{}]*?)\}/', $str, $found); 
  echo "<pre>"; print_r($found); echo "</pre><hr>"; 
  $t = explode("|", $found[i][j]);
  var_dump($t);
  exit();
Все лишнее убрал.
Задача имееттся строка-шаблон где знаками { и } выделяется набор ротационных слов (слова разделены знаком |)
С помощью preg_match_all('/\{([^{}]*?)\}/', $str, $found); я получаю наборы ротационных слов:
[0] => самый|очень
[1] => программист|programmer
[2] => самый|очень
, а вот из этих наборов получить сами слова - что-то не получаетс:
array(1) { [0]=> string(0) "" }
Подскажите что я делаю неправильно для доступа к отдельному слову?
 
  • Like
Реакции: WMix

WMix

герр M:)ller
Партнер клуба
PHP:
$t = explode("|", $found[i][j]);
эта строчка странная,если вместо i и j написать конкретно 1 и 0 соответствено, то первую находку уже разбил бы

PHP:
$str = "Я {самый|очень} хороший {программист|programmer} {самый|очень}"; 
preg_match_all('/\{([^{}]*?)\}/', $str, $founds); 
echo "<pre>"; print_r($founds); echo "<hr>"; 
//  $t = explode("|", $founds[1][0]);
//  var_dump($t);
foreach($founds[1] as $found){ // тут я пробежался по результату
    var_dump(explode("|", $found));
}
echo "</pre>";
 

lostbananan

Новичок
написал так:
PHP:
$f= $found[1];
  $t = explode("|", $f);
  var_dump($t);
Выдает: Warning: explode() expects parameter 2 to be string, array given in W:\home\TZ\www\index.php on line 7
NULL
Так что опять что-то НЕ то да и мне надо получить все слова-ротаторы из всех в данном случае трех групп
 

lostbananan

Новичок
Строка
PHP:
echo "<br>$found[1]<br>";
выдает: Array[1]
Как мне достучаться до групп слов?
 

WMix

герр M:)ller
Партнер клуба
Warning: explode() expects parameter 2 to be string, array given in W:\home\TZ\www\index.php on line 7
NULL
не возвожно передавать на функцию масивы если она ожидает скалярные величины.
либо брать конкретный элемент либо перебор циклом
PHP:
$t = explode("|", $found[1][0]);
 

lostbananan

Новичок
Понятно:
PHP:
echo "<br>".print_r($found[1],1)."<br>";// там как раз групп
выдает:
Array ( [0] => самый|очень [1] => программист|programmer [2] => самый|очень )
А как добраться (например) до [0] => самый|очень?
 
Сверху