Перейти к содержимому

Сервис обмена электронных валют

Партнерская программа Kredov

РЕШЕНИЯ задач на PHP для начинающих

#71 cage

cage
  • Пользователь
  • 6 сообщений
  • Репутация: 0
0

Отправлено 29 Ноябрь 2013 - 13:37

<?php
$init_arr = array(0, -1, 1, 4, 2, -3, 3);
for( $i=0;  $i<count($init_arr); ++$i ){
if($i % 2 == 0){
  if($init_arr[$i]<0){
   echo($i);
   return;
  }
}else{
  if($init_arr[$i]>=0){
   echo($i);
   return;
  }
}
}
echo(0);
?>
А так получилось у меня))
  • 0

#72 isvetlichniy

isvetlichniy
  • Пользователь
  • 619 сообщений
  • Репутация: 93

Отправлено 29 Ноябрь 2013 - 17:40

А так получилось у меня))


а если массив будет вот такой?
$init_arr = array(-10, 1, -1, 4, -2, 3, -3);

я предложил универсальное решение
  • 0

#73 Гость_Гость_*

Гость_Гость_*
  • Гости

Отправлено 25 Январь 2014 - 09:48

Задача №13 ("Перевертыш", работа со строками)
Вводиться слово, выводиться его перевертыш. Например: "перевертыш" => "шытревереп".


Ответ на задачу strrev()

да и вообще половина ответов это стандартные ф-ции :wacko:
  • 0

#74 T(h)rasher

T(h)rasher
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 19 Март 2014 - 13:11

Доброго времени суток. По поводу задачи №1 (скорость движения машины при пройденном пути и времени). Решил данную задачу, но без формы и сессии, так сказать, в лоб. Мой код:





<?
//$p = false;//флаг для единиц измерения скорости, true - м/с, false - км/ч
function speed($S, $t, $p){

$V = 0;
if (isset($V)){
if (isset($p)){
if ($p == true){
$V = $S/$t;
} else{
$S = $S/1000;
$t = $t/3600;
$V = $S/$t;
}
}
}

return $V;
}
$p = true;
$res = speed(20, 5, 1);

if (isset($p)){
if ($p == true){
echo "Скорость движения машины равна ".$res." м/с";
}else {
echo "Скорость движения машины равна ".$res." км/ч";
}
}

?>

Решил посмотреть другие варианты решения и увидел такой ответ: 

 

Вот полный код скрипта:

<?php
session_start();

function speed($s, $t, $val){
$speed[1] = $s / $t . " км/ч";
$speed[2] = $speed[1] / 3.6 . " м/с";
return $speed[$val];
}

if(!empty($_POST['submit'])){
if($_POST['S'] <= 0 || $_POST['t'] <= 0){
$_SESSION['error'] = '<strong><em>Число должно быть больше нуля</em></strong>';
header("Location: index.php");
exit();
}else{
$_SESSION['res'] = "<strong><em>" .speed($_POST['S'], $_POST['t'], $_POST['val']). "</em></strong>";
header("Location: index.php");
exit();
}
}
?>

<h3><ins>Рассчет скорости</ins></h3>

<?php
echo $_SESSION['error'];
echo $_SESSION['res'];
session_unset();
session_destroy();
?>
<form method="post" action="">
<table>
<tr>
<td>Пройденный путь (км):</td> <td><input type="text" name="S" /></td>
</tr>
<tr>
<td>Время движения (ч):</td> <td><input type="text" name="t" /></td>
</tr>
<tr>
<td><input type="radio" name="val" value="1" checked="checked" /> км/ч</td> <td><input type="radio" name="val" value="2" /> м/с</td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit" value="Рассчитать" /></td>
</tr>
</table>
</form>

 

 

 

Посмотрев этот код, я решил его несколько доработать (для себя). Например, хотелось бы работать не с массивом $_POST, а с простыми переменными. Написал так:
 





<?php
session_start();

function speed($s, $t, $val){
	$speed[1] = round(($w / $hm), 2) . " км/ч";
	$speed[2] = round(($speed[1] / 3.6), 2) . " м/с";
	return $speed[$v];
}


if($_SERVER['REQUEST_METHOD']=="POST"){
	if (isset($_POST['submit'])){

		$S = trim($_POST['S']);
		$t = trim($_POST['t']);
		$res = trim($_SESSION['res']);
		$val = trim($_POST['val']);
	
	
		if($S <= 0 || $t <= 0){
			$_SESSION['error'] = '<strong><em>Проверьте корректность введенных параметров.</em></strong>';
			header("Location: $_SERVER[PHP_SELF]");
			ob_clean();
			exit();
		}else{
			$res = "<strong><em>" .speed($S, $t, $val). "</em></strong>";
			header("Location: $_SERVER[PHP_SELF]");
			ob_clean();
			exit();		
		} 
	}
}

?>

<h3><ins>Рассчет скорости</ins></h3>

<?php
if (isset($_SESSION['error'])) echo $_SESSION['error'];
?>
<form method="post" action="">
	<table>
		<tr>
			<td>Пройденный путь (км): <input type="text" name="S" /></td>
		</tr>
		
		<tr>
			<td>Время движения (ч): <input style='margin-left: 18px' type="text" name="t" /></td>
		</tr>
		
		<tr>
			<td>
				<input type="radio" name="val" value="1" checked="checked" />
					<span> км/ч</span> 
				
				<input type="radio" name="val" value="2" />
					<span> м/с</span>
			</td> 
		</tr>
		
		<tr>
			<td colspan="2"><input type="submit" name="submit" value="Рассчитать" /></td>
		</tr>
		
		<tr>
			<td>
				<?
					if (!empty($res)) echo "Скорость движения машины равна ".$res;
				?>
			</td>
		</tr>
	</table>
</form>

<?
session_unset();
session_destroy();
?>

Но данный скрипт почему-то не работает. Подскажите, в чем может быть проблема.


Сообщение отредактировал T(h)rasher: 19 Март 2014 - 13:15

  • 0

#75 T(h)rasher

T(h)rasher
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 27 Март 2014 - 12:43

Разобрался в чем была проблема. Оказывается, я пытаюсь проверять на пустоту и установленность ячейку 'res' массива $_SESSION, когда эта ячейка еще не установлена и пуста. Из-за этого и не работало.


  • 1

#76 T(h)rasher

T(h)rasher
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 01 Апрель 2014 - 12:59

 

 

Задача №3(математическая)

Цитата

Разработать функцию, которая вносит процентную коррекцию в массив чисел(целых, дробных или смешанных не имеет значения)
Исходные данные:
1)Массив с числами в виде
array(5, 6.5, 10, 3.355, 400, 9.43, ..., [n]);
2) Процент внесения изменений(0.8 - 80% от целого, 1 - оставить без изменения, 2.5 - увеличить в полтора раза и т.д.)

Предусмотреть, что пользователь случайно может в функцию передать отрицательный процент, тогда функция должна вернуть ошибку.
На выходе нужно получить такой же массив, с внесённой процентной ставкой.

Решил выложить сюда свое решение этой задачи. 
Решение, может быть, несколько грубоватое, "в лоб" и тем не менее. Конструктивная критика приветствуется.
 



<?
session_start();

$num = array(4, 5.387, 0.005, 2.76, 0.92, 4.21, 789);

function percent($z, $n, $num){
	
	for ($i=0, $cnt = count($num); $i<$cnt; $i++){
		
		if (is_float($num[$i])) {
			if ($num[$i] > 1.0){
				$chng[$i] = $num[$i] * $z;
			}else{
				$chng[$i] = $num[$i] * $n;
			}
		}else{
			$chng[$i]=$num[$i];
		}
	}
	
	return $chng;
}

if($_SERVER['REQUEST_METHOD']=="POST"){
	if (
		isset($_POST['submit']) && !empty($_POST['submit']) &&
		isset($_POST['zero']) && !empty($_POST['zero']) &&
		isset($_POST['one']) && !empty($_POST['one'])
		)
		
	{	
		$zero = trim(strip_tags($_POST['zero']));
		$one = trim(strip_tags($_POST['one']));
					
		if($zero <= 0.0 || $one <= 0.0){
			$_SESSION['error'] = '<strong><em>Величина одного из параметров введена некорректно.</em></strong>'.'<br/>'.'<strong><em>Процентная корректировка должна быть БОЛЬШЕ нуля!</em></strong>';
			header("Location: $_SERVER[PHP_SELF]");
			ob_clean();
			exit();
		}else{
		
			if ($zero > 1.0) echo '<br/><strong><em>ПЕРВЫЙ ПАРАМЕТР должен быть МЕНЬШЕ единицы, но больше нуля!</strong></em><br/>';
			if ($one < 1.0) echo '<strong><em>ВТОРОЙ ПАРАМЕТР должен быть БОЛЬШЕ единицы!</strong></em><br/>';
			
			if ($zero < 1.0 && $zero > 0.0 && $one > 1.0)
			$_SESSION['res'] = percent($zero, $one, $num);
			
										
			//header("Location: $_SERVER[PHP_SELF]");
			//ob_clean();
			//exit();		
		}	
	}
}
?>

<h3><ins>Процентная коррекция чисел с плавающей точкой</ins></h3>
<?
echo "<strong><ins>Текущий массив чисел: </ins></strong>".'<br/>';
var_dump($num);
echo '<br/><br/>';
?>

<?php
if (isset($_SESSION['error'])) echo $_SESSION['error'];
?>
<form method="post" action="">
	<table border='0'>
		<tr>
			<td>Введите процентную корректировку для ПЕРВОГО ПАРАМЕТРА, который МЕНЬШЕ единицы (формат вводимого процента: 0.0...):<br/> <input type="text" name="zero" /></td>
		</tr>
		
		<tr>
		
		<tr><br/></tr>
		
			<td>Введите процентную корректировку для ВТОРОГО ПАРАМЕТРА, который БОЛЬШЕ единицы (формат вводимого процента: 0.0...):<br/> <input type="text" name="one" /></td>
		</tr>
		
		<tr>
			<td colspan="2"><input type="submit" name="submit" value="Рассчитать" /></td>
		</tr>
		
		<tr>
			<td>
				<?
				if (!empty($_SESSION['res']) && isset($_SESSION['res'])) {
					echo "Процентная корректировка для этого массива ".'<br/>';
					var_dump($_SESSION['res']);
				}
				?>
			</td>
		</tr>
	</table>
</form>

<?
session_unset();
session_destroy();
?>

  • 0

#77 T(h)rasher

T(h)rasher
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 08 Апрель 2014 - 14:06

Задача №4(работа с файлами)

Имеется файл с содержимым (книга|автор|издательство|состояние) например:

PHP 5 объектно-ориентированное программирование|Шишов Алексей|БХВ|1
MySQL: неподъемная книга разработчика|Шишов Алексей|БХВ|0
Справочник всего Г в России|Пупкин Вася|Пупкин и к0|1
Книга для домохозяек|Хозяйка Лидия|Домхоз|1
Телевидение в каждой коморке|Телестанция СССР|КВС+|0
Нужно написать 3 функции.
1) Функция, считывающая из файла построчно данные и разбила их на многомерный массив вида:
array(
        array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
        array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
        array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
    );Выходные данные: массив книг.
2) Функция, обрабатывающая массив книг и возвращающая книги с запрошенным состоянием. Поле состояния отвечает за публикацию, опубликована книга или нет.
3) Функция, выводящая список книг в удобочитаемой форме.

 


Пока справился только с первым и последним пунктом, на втором пункте застрял. (Правда, данные считываю не построчно, а просто преобразую файл в массив с помощью функции file(), но думаю это не принципиально ). Во втором пункте запутался с многомерными массивами. 
Собственно, у меня есть функция, которая обрабатывает файл и выводит его содержимое. Вот код:


<?
function FileToAr($f){
	if (file_exists($f)){
		if (sizeof($f) != 0){
			$books = file($f);
			$books = str_replace("\r\n", "", $books);
			$keys = array('title', 'author', 'publishers', 'status');
			if(is_array($books)){
			
				for ($i = 0, $cnt = count($books); $i < $cnt; $i++){
					$Res[$i] = explode("|", $books[$i]); 
					$Res[$i] = array_combine($keys, $Res[$i]); 
				}
				
				echo "<hr/><pre>";
				foreach($Res as $books => $keys){
				                foreach($keys as $key => $val){
						echo "[$books][$key] = [$val]\r\n";
					}
					echo "<br/>";
				}
					echo "</pre>";
			}
		}
	}
	
}

FileToAr('catalog.log');


?>

Результатом выполнения данного кода является следующее:

 

[0][title] = [PHP 5 объектно-ориентированное программирование]
[0][author] = [Шишов Алексей]
[0][publishers] = [БХВ]
[0][status] = [1]

[1][title] = [MySQL: неподъемная книга разработчика]
[1][author] = [Шишов Алексей]
[1][publishers] = [БХВ]
[1][status] = [0]

[2][title] = [Справочник всего Г в России]
[2][author] = [Пупкин Вася]
[2][publishers] = [Пупкин и к0]
[2][status] = [1]

[3][title] = [Книга для домохозяек]
[3][author] = [Хозяйка Лидия]
[3][publishers] = [Домхоз]
[3][status] = [1]

[4][title] = [Телевидение в каждой коморке]
[4][author] = [Телестанция СССР]
[4][publishers] = [КВС+]
[4][status] = [0]

Я хотел бы при выборе на форме, допустим, опубликованных книг, изменить значение поля "статус" с 1 на слово "Опубликовано" и выводить только эти опубликованные книги (название, автор и т.д.). При выборе не опубликованных книг аналогично. Соответствующее поле на форме предусмотрел, но данные выводится неверно и в разброд. Т.е, результат (в случае выбора опубликованных книг) должен быть такой:

[0][title] = [PHP 5 объектно-ориентированное программирование]
[0][author] = [Шишов Алексей]
[0][publishers] = [БХВ]
[0][status] = [Опубликовано]

[2][title] = [Справочник всего Г в России]
[2][author] = [Пупкин Вася]
[2][publishers] = [Пупкин и к0]
[2][status] = [Опубликовано]

[3][title] = [Книга для домохозяек]
[3][author] = [Хозяйка Лидия]
[3][publishers] = [Домхоз]
[3][status] = [Опубликовано]

Можно ли это сделать с помощью кода, представленного выше? И если можно, то как? Чтобы все было в одной функции. Заранее спасибо за помощь.

Сообщение отредактировал T(h)rasher: 09 Апрель 2014 - 11:43

  • 0

#78 T(h)rasher

T(h)rasher
  • Пользователь
  • 22 сообщений
  • Репутация: 1

Отправлено 14 Апрель 2014 - 17:31

Всем доброго времени суток. Разобрался как сделать вывод.

Вот мое решение:

<?
session_start();
define("CATALOG_LOG", "catalog.log");

if($_SERVER['REQUEST_METHOD']=="POST"){
	if (
		isset($_POST["send"]) && !empty($_POST["send"]) && 
		isset($_POST["title"]) && !empty($_POST["title"]) && 
		isset($_POST["authname"]) && !empty($_POST["authname"]) &&	
		isset($_POST["publishers"]) && !empty($_POST["publishers"]) &&	
		isset($_POST["instatus"]) && !empty($_POST["instatus"])
		)
	{
		$bname = trim(strip_tags($_POST["title"]));
		$aname = trim(strip_tags($_POST["authname"]));
		$pname = trim(strip_tags($_POST["publishers"]));
		$st = trim(strip_tags($_POST["instatus"]));
		
		if (is_numeric($bname)) $_SESSION['error'] = '<strong><em>Название книги введено не корректно.</em></strong><br/>';
		if (is_numeric($aname)) $_SESSION['error'] = '<strong><em>Наименование автора введено не корректно.</em></strong><br/>';
		if (is_numeric($pname)) $_SESSION['error'] = '<strong><em>Наименование издательства введено не корректно.</em></strong><br/>';
		if (!is_numeric($st)) $_SESSION['error'] = '<strong><em>Состояние введено не корректно.</em></strong><br/>';
		
		$bkinfo = '';
			
		if (is_string($bname) && is_string($aname) && is_string($pname) && is_numeric($st)){
		
			$bkinfo = $bname. ' | ' .$aname. ' | ' .$pname. ' | ' .$st."\r\n";
		}
		
		$g = fopen(CATALOG_LOG, "a");
		if (is_resource($g)){
			if (strlen($bkinfo)!=0){
				fputs($g,$bkinfo);
				fclose($g);
			}
			
		}else{
			echo "<strong>Файл поврежден или не доступен.</strong>";
		}
		header("Location: ".$_SERVER["PHP_SELF"]);
		exit;
	}else{
		$_SESSION['error'] = "<strong>Данные из формы не поступили, либо поступили не в полном объеме.</strong>";
	}
	
}

	
?>

<?php
if (isset($_SESSION['error'])) echo $_SESSION['error'];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru">
<head>
	<title>Работа с файлами</title>
	<style>
		.fld{
			width: 200px;
		}
	</style>
	<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>

<h1>Заполните форму</h1>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<table>
	
		
			<tr> 
				<td >
					Название книги: <input class='fld' type="text" name="title" /><br /><br />
				</td>
			</tr>
			
			<tr>
				<td>
					Имя автора: <input class='fld' style='margin-left: 30px' type="text" name="authname" /><br /><br />
				</td>
				
				<td align='center'>
					Выберите книги, которые вы хотите просмотреть: <br/>
					<select size="1" name="outstatus"> 
						<option value=""></option>
						<option value="yes">Опубликованные</option>
						<option value="not">Не опубликованные</option>
						<option value="all">Все книги</option>
					</select>
					
					<input style='margin-left: 40px' type="submit" name='out' value="Вывести книги" />
				</td>
								
			</tr>
			
			<tr>
				<td>
					Издательство: <input class='fld' style='margin-left: 15px' type="text" name="publishers" /><br /><br />
				</td>
				
				
			</tr>
			
			<tr>
				<td rowspan='4'>
					Состояние книги ( опубликована [1] или не опубликована [0] ): <input class='fld' type="text" name="instatus" /><br />
				</td>
			</tr>
				
	<table width='670px'>				
		<tr>
			<td align='center'>
				<input type="submit" name='send' value="Отправить информацию о книге" />
			</td>
		</tr>	
	</table>			
		
	
</table>


<h2 align='center'>Каталог книг</h2>

<?
function FileToAr($fl){

			if (file_exists($fl)){
				if (sizeof($fl) != 0){
					$books = file($fl);
					$books = str_replace("\r\n", "", $books);
					$keys = array('title', 'author', 'publishers', 'status');
					if(is_array($books)){
			
						for ($i = 0, $cnt = count($books); $i < $cnt; $i++){
							$Res[$i] = explode("|", $books[$i]); 
							$Res[$i] = array_combine($keys, $Res[$i]); 
						}
				
						for ($j = 0, $cnt = count($Res); $j < $cnt; $j++){
							if ($Res[$j]['status'] == '1'){
								$Res[$j]['status'] = 'Опубликовано';
							}else{
								$Res[$j]['status'] = 'Не опубликовано';
							}	
						}

					}					
				}
			}

	
return $Res;
}

function state($f){

	if($_SERVER['REQUEST_METHOD']=="POST"){
		
		if	(
			isset($_POST["outstatus"]) && !empty($_POST["outstatus"]) && 
			isset($_POST["out"]) && !empty($_POST["out"])  
			)
		{
		
			switch($_POST["outstatus"]){
			
				 case 'yes':
					
					$Res = FileToAr($f);
					
					echo "<hr/><pre>";
					
					echo "<h3>Опубликованные книги</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							if ($Res[$books]['status'] == 'Опубликовано'){
								echo "[$books][$key] = [$val]\r\n";
							}
						}
						echo "<br/>";
					}
					echo "</pre>";
				break;
				
				case 'not':
					
					$Res = FileToAr($f);
					echo "<hr/><pre>";
					
					echo "<h3>Не опубликованные книги</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							if ($Res[$books]['status'] == 'Не опубликовано'){
								echo "[$books][$key] = [$val]\r\n";
							}
						}
						echo "<br/>";
					}
					echo "</pre>";
				break;
				
				case 'all':
					
					$Res = FileToAr($f);
					echo "<hr/><pre>";
					
					echo "<h3>Весь книжный каталог</h3>";
					
					foreach($Res as $books => $keys){
						foreach($keys as $key => $val){
							echo "[$books][$key] = [$val]\r\n";
						}
						echo "<br/>";
					}
					echo "</pre>";
			}
							
		}
	}	
}


state('catalog.log');
?>

</body>
</html>

<?
session_unset();
session_destroy();
?>

Прикрепленные изображения

  • notpublic.JPG
  • all.JPG
  • public.JPG

Сообщение отредактировал T(h)rasher: 14 Апрель 2014 - 18:33

  • 0

#79 copypaster

copypaster
  • Пользователь
  • 7 сообщений
  • Репутация: 0

Отправлено 16 Апрель 2014 - 13:10

Доброе время суток. Вот решился выложить свои изыскания на тему.
 
 Задача №3(математическая)
 

Разработать функцию, которая вносит процентную коррекцию в массив чисел(целых, дробных или смешанных не имеет значения)
Исходные данные: 
1)Массив с числами в виде
array(5, 6.5, 10, 3.355, 400, 9.43, ..., [n]);2) Процент внесения изменений(0.8 - 80% от целого, 1 - оставить без изменения, 2.5 - увеличить в полтора раза и т.д.)

Предусмотреть, что пользователь случайно может в функцию передать отрицательный процент, тогда функция должна вернуть ошибку.
На выходе нужно получить такой же массив, с внесённой процентной ставкой.

 
Вот такой код слепил.

  <?php
  $mas=array(5, 6.5, 10, 3.355, 400, 9.43, 14, 328.78);
  if (isset ($_POST['submit']) and $_POST['k']>=0){
  echo "Измененный массив:<br> Ключ - Знач.<br>";
  foreach($mas as $key=>$value){
  $value=$value*$_POST['k'];
  echo  "$key - $value<br>";
  }}
  else {
  echo "Ошибка! Множитель должен иметь неотрицательное значение!";
  }; 
  ?>  

А вот оформление.
 

<h3>Изменения элементов массива по заданному множителю</h3>
  Исходный массив (5, 6.5, 10, 3.355, 400, 9.43, 14, 328.78)<br>
  <form action=array.php method=POST>
  Введите множитель: <input type=text name="k" size=1>
  <input type=submit name="submit" value="Вычислить"></form>

  • 0

#80 copypaster

copypaster
  • Пользователь
  • 7 сообщений
  • Репутация: 0

Отправлено 16 Апрель 2014 - 13:33

Задача №4(работа с файлами)

 

 

Имеется файл с содержимым (книга|автор|издательство|состояние) например:

PHP 5 объектно-ориентированное программирование|Шишов Алексей|БХВ|1
MySQL: неподъемная книга разработчика|Шишов Алексей|БХВ|0
Справочник всего Г в России|Пупкин Вася|Пупкин и к0|1
Книга для домохозяек|Хозяйка Лидия|Домхоз|1
Телевидение в каждой коморке|Телестанция СССР|КВС+|0
Нужно написать 3 функции.
1) Функция, считывающая из файла построчно данные и разбила их на многомерный массив вида:
array(
        array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
        array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
        array(title => [книга], author => [автор], print => [издательство], status => [состояние]),
    );Выходные данные: массив книг.
2) Функция, обрабатывающая массив книг и возвращающая книги с запрошенным состоянием. Поле состояния отвечает за публикацию, опубликована книга или нет.
3) Функция, выводящая список книг в удобочитаемой форме.

 

Ох и намучился я с этими многомерными массивами, но зато когда заработало ощущения эйфории. Может косо или криво, но заработало.

 

1) 

<?php
  $filename="file.csv";
  $fh = fopen($filename, "a+");
  while (($buffer = fgetcsv ($fh, 1024, "|"))!==false){
  $pack=array('title'=>$buffer[0], 'author'=>$buffer[1], 'print'=>$buffer[2], 
  'status'=>$buffer[3]);
  $ret[]=$pack;
  }
  $sum=count($ret);
  foreach($ret as $key=>$mas)
  {foreach($mas as $key2=>$value2)
  {echo $key2.">>".$value2."<br>";
  }
  echo "<br>";
  }  
  ?>

2) 

<?php
  $filename="file.csv";
  $fh = fopen($filename, "a+");
  while (($buffer = fgetcsv ($fh, 1024, "|"))!==false){
  $pack=array('title'=>$buffer[0], 'author'=>$buffer[1], 'print'=>$buffer[2], 
  'status'=>$buffer[3]);
  $mas[]=$pack;
  }
 function find($arr, $fld, $val, $rel="=="){
 /* Параметры:
  * $arr - двумерный массив, в котором осуществляется поиск
  * $fld - поле, т.е. индекс элемента в строке
  * $val - значение
  * $rel - отношение (по уолчанию - "==")
  * Вовращает: массив номеров (индексов)всех строк, удовлетворяющий условию $fld, $val, $rel
  */
  $criterion='return $r[$fld]'. "$rel \"$val\";"; /* строка с условием */
  foreach ($arr as $ind=>$r)
  {if(eval($criterion)===true){
   $ret[]=$ind;
  }
  }       
  return $ret; 
 }  
 $ind=find($mas, 'status', "1"); 
 for ($i=0; $i<=count($ind); $i++){
  echo $mas[$ind[$i]][title]."<br>";
 }
  ?>

3)  

<?php
  $filename="file.csv";
  $fh = fopen($filename, "a+");
  while (($buffer = fgetcsv ($fh, 1024, "|"))!==false){
  $pack=array('title'=>$buffer[0], 'author'=>$buffer[1], 'print'=>$buffer[2], 
  'status'=>$buffer[3]);
  $ret[]=$pack;
  } ;
  $k=1;
  echo "<h3>Список книг</h3>";
     for ($i=0;  $i<count($ret); $i++){
      echo $k.". ".$ret[$i]["title"].".<br>";
    $k++;
  } ; 
  
 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru