Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите разобраться
 
 автор: Bustrui   (14.02.2010 в 19:16)   письмо автору
 
 

Пытаюсь сделать скрипт... Чегото совсем не доходит в чем ошибка?
<?php 
$str 
"Ничего не понемаю... ничего не работает... моск уже кипит...."
$arr str_split($str,25); //разбивает переменную на масив со строками по 25 символов
$n=count($arr);            //подсчитывает количество строк
do
{
if(!
$i){$i 0;}
$arr $arr[$i];
$num strlen($arr);
$ii=$i+1;
echo 
'<tr>
    <td>'
.$ii.'</td>
    <td>'
.$arr.'</td>
    <td>'
.$num.'</td>
    <td>&nbsp;</td>
  </tr>'
;
$i $i 1;
}
while(
$i <= $n);
?>


Переменная $str должна разбиваться на переменные содержащие не более 25 символов, затем идет подсчет этих переменных и выводятся они под нумерацией и справа показывается сколько они символов содержат

Но у меня почемуто выводится только первая переменная с 25 символами....

  Ответить  
 
 автор: Тень&   (14.02.2010 в 19:45)   письмо автору
 
   для: Bustrui   (14.02.2010 в 19:16)
 

http://phpfaq.ru/debug

  Ответить  
 
 автор: Bustrui   (14.02.2010 в 19:53)   письмо автору
 
   для: Тень&   (14.02.2010 в 19:45)
 

спасибо

  Ответить  
 
 автор: Yuriev   (14.02.2010 в 19:51)   письмо автору
 
   для: Bustrui   (14.02.2010 в 19:16)
 

Вместо $arr поробуйте $brr
потому, как $arr = $arr[$i]; не понятно (не соображу что будет)

  Ответить  
 
 автор: Bustrui   (14.02.2010 в 19:57)   письмо автору
 
   для: Yuriev   (14.02.2010 в 19:51)
 

Немного изменил скрипт (цикл фор)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>Untitled Document</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="60">Строка</td>
    <td width="300">Текст</td>
    <td width="80">символов</td>
    <td>&nbsp;</td>
  </tr>
<?php 
error_reporting
(E_ALL);
$str "Ничего не понемаю... ничего не работает... моск уже кипит...."
$arr str_split($str,25); //разбивает переменную на масив со строками по 25 символов
$n=count($arr);            //подсчитывает количество строк
echo $arr['0']."<br>";
echo 
$arr['1']."<br>";
echo 
$arr['2']."<br>";
for(
$i=0$i $n$i++)
{
$arr $arr[$i];
$num strlen($arr);
$ii=$i+1;
echo 
'<tr>
    <td>'
.$ii.'</td>
    <td>'
.$arr.'</td>
    <td>'
.$num.'</td>
    <td>&nbsp;</td>
  </tr>'
;
}
?>
</table>
</body>
</html>

вот что получается:
Ничего не понемаю... ниче
го не работает... моск уж
е кипит....

Notice: Uninitialized string offset: 2 in Y:\home\rab.xx\www\qq.php on line 27
[Денвер: показать возможную причину ошибки]
Строка    Текст    символов     
1    Ничего не понемаю... ниче    25     
2    и    1     
3        0






$arr = $arr[$i] - присваевается значение масива $arr[$i]

  Ответить  
 
 автор: Yuriev   (14.02.2010 в 20:08)   письмо автору
 
   для: Bustrui   (14.02.2010 в 19:57)
 

Посмотри после $arr = $arr[$i]; какой длины станет массим

  Ответить  
 
 автор: Bustrui   (14.02.2010 в 20:12)   письмо автору
 
   для: Yuriev   (14.02.2010 в 20:08)
 

непонял.... что вы имеете ввиду?

по умолчаную $i ровна 0
после каждого цикал она увеличивается на еденицу, это должно выглядеть так:
$arr = $arr[0]
$arr = $arr[1]
$arr = $arr[2]
$arr = $arr[3]

  Ответить  
 
 автор: Yuriev   (14.02.2010 в 20:19)   письмо автору
 
   для: Bustrui   (14.02.2010 в 20:12)
 

Я имею в виду, что после $arr = $arr[$i] массив $arr[] превратится во что-то другое

  Ответить  
 
 автор: Bustrui   (14.02.2010 в 20:24)   письмо автору
 
   для: Yuriev   (14.02.2010 в 20:19)
 

Ой спасибо, дошло )))
Вместо $arr = $arr[$i] (получается этим действием я уничтожал сам масив)
сделал $a = $arr[$i]

  Ответить  
 
 автор: Yuriev   (14.02.2010 в 20:30)   письмо автору
 
   для: Bustrui   (14.02.2010 в 20:24)
 

Пример для сравнения
<table>
<tr><td>Number</td><td>Value</td><td>Length</td></tr>
<?php
$str 
"Ничего не понемаю... ничего не работает... моск уже кипит....";
$arr str_split($str,25);
for (
$i 0$i count($arr); $i++)
   echo 
'
      <tr>
      <td>'
.($i 1).'</td>
      <td>'
.$arr[$i].'</td>
      <td>'
.strlen($arr[$i]).'</td>
      </tr>'
;
?>
</table>

  Ответить  
 
 автор: oliss   (15.02.2010 в 14:03)   письмо автору
 
   для: Yuriev   (14.02.2010 в 20:30)
 

Вообще-то правильней будет
<?
$arr 
count(str_split($str,25));
for (
$i 0$i $arr$i++) 

  Ответить  
 
 автор: t3ma   (15.02.2010 в 14:15)   письмо автору
 
   для: oliss   (15.02.2010 в 14:03)
 

В чем Ваша правильность заключается ?

  Ответить  
 
 автор: oliss   (15.02.2010 в 14:23)   письмо автору
 
   для: t3ma   (15.02.2010 в 14:15)
 

А вы как думаете?

  Ответить  
 
 автор: t3ma   (15.02.2010 в 19:26)   письмо автору
 
   для: oliss   (15.02.2010 в 14:23)
 

На вкус и цвет товарища нет, о правильности здесь речи не может быть, так как оба варианта "правильные"...

  Ответить  
 
 автор: oliss   (15.02.2010 в 23:52)   письмо автору
 
   для: t3ma   (15.02.2010 в 19:26)
 

если использовать вариант
<?
$arr 
str_split($str,25);
for (
$i 0$i count($arr); $i++) 

то функция count() будет вызываться каждый раз сколько итерации цикла


при таком варианте функция count() будет вызвана только 1(один) раз
<?
$arr 
count(str_split($str,25));
for (
$i 0$i $arr$i++)  

  Ответить  
 
 автор: Тень&   (16.02.2010 в 00:15)   письмо автору
 
   для: oliss   (15.02.2010 в 23:52)
 

> при таком варианте функция count() будет вызвана только 1(один) раз

А что случится с массивом $arr после такого акта насилия:
<?php
$arr 
count(str_split($str,25)); 

?

  Ответить  
 
 автор: Yuriev   (16.02.2010 в 10:32)   письмо автору
 
   для: oliss   (15.02.2010 в 23:52)
 

Интересный вопрос: count() выполнится один раз или сколько итераций цикла?
Как это можно проверить?

  Ответить  
 
 автор: sim5   (16.02.2010 в 10:56)   письмо автору
 
   для: Yuriev   (16.02.2010 в 10:32)
 

1 (для приведенной строки).

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования