Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.12.2010, 22:35   #1
Ast
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 117
По умолчанию задание по PHP.

Работа с ассоциативными массивами.
Дан массив цен на товары. Ключами в массиве являются артикулы товаров.
PHP код:
Array (
  
'c4ca4' => 643.10,
  
'c81e7' => 350.47,
  
'eccbc' => 558.45,
  
'a87ff' => 326.92,
  
'e4da3' => 'fly',
  
16790 => 1232.29,
  
'8f14e' => 746.36,
  
'c9f0f' => 'codeigniter',
  
'45c48' => 2553.87,
  
'd3d94' => 'lamp',
  
'6512b' => 3872.57,
  
'c20ad' => 30.63,
  
'c51ce' => 356.76,
  
'aab32' => 405.00,
  
'9bf31' => 'simple',
  
'c74d9' => 85.96,
  
'70efd' => 287.27,
  
'6f492' => 'like',
  
'1f0e3' => 1820.20,
  
'98f13' => 1075.65,
  
'3c59d' => 599.37,
  
'b6d76' => 499.76,
  
37693 => 'drupal',
  
'1ff1d' => 2853.28,
  
'8e296' => 4155.76,
  
'4e732' => 819.14,
  
'02e74' => 275.91,
  
'33e75' => 9614.00,
  
'6ea9a' => 'joomla',
  
34173 => 1489.35,
  
'c16a5' => 2713.78,
  
'6364d' => 63.34,
  
'182be' => 1087.38,
  
'e3698' => 28004.67,
  
'1c383' => 126925,
  
'19ca1' => 41328.92,
  
'a5bfc' => 'zend',
  
'a5771' => 4939.37,
  
'd67d8' => 4789.11,
  
'd6459' => 7035.31,

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


часть решения:
Код HTML:
<html>
<head>
<title><?php echo "задание" ?></title>
</head>
<body>

<p>
<?php

echo "<pre>";
$arr = array('c4ca4' => 643.10,
  'c81e7' => 350.47,
  'eccbc' => 558.45,
  'a87ff' => 326.92,
  'e4da3' => 'fly',
  16790 => 1232.29,
  '8f14e' => 746.36,
  'c9f0f' => 'codeigniter', //
  '45c48' => 2553.87,
  'd3d94' => 'lamp',
  '6512b' => 3872.57,
  'c20ad' => 30.63,
  'c51ce' => 356.76,
  'aab32' => 405.00,
  '9bf31' => 'simple',
  'c74d9' => 85.96,
  '70efd' => 287.27,
  '6f492' => 'like',
  '1f0e3' => 1820.20,
  '98f13' => 1075.65,
  '3c59d' => 599.37,
  'b6d76' => 499.76,
  37693 => 'drupal',
  '1ff1d' => 2853.28,
  '8e296' => 4155.76,
  '4e732' => 819.14,
  '02e74' => 275.91,
  '33e75' => 9614.00,
  '6ea9a' => 'joomla',
  34173 => 1489.35,
  'c16a5' => 2713.78,
  '6364d' => 63.34,
  '182be' => 1087.38,
  'e3698' => 28004.67,
  '1c383' => 126925,
  '19ca1' => 41328.92,
  'a5bfc' => 'zend',
  'a5771' => 4939.37,
  'd67d8' => 4789.11,
  'd6459' => 7035.31);

echo "Массив:<br>";
echo "<br>";
foreach($arr as $key => $val) 
{
echo ("$key => $val <br>");
}
echo "<br>"; 
echo "Сортируем по возрастанию ключей:<br>";
echo "<br>"; 
ksort($arr);
foreach($arr as $key => $val)
{
echo (" $key=>$val<br>");
}
echo "<br>";
echo "Сортируем массив по возрастанию:<br>";
echo "<br>";
asort($arr);
foreach($arr as $key => $val)
{
echo (" $key=>$val<br>");
}
echo "<br>";

unset($arr[0]);
$arr = array_values($arr);
print_r($arr);
echo "</pre>";

?>

<p>

</body>
</html>

через : 

unset($arr[0]);
$arr = array_values($arr);
print_r($arr);
echo "</pre>";
строки не удаляет
и в на целочисленном типе...запутался
нужно доделать(
После чего преобразовать все цены в целочисленный тип, при нахождении строки в значении элемента необходимо удалить его из массива и записать в другой массив, в котором будут храниться все строковые значения. К каждому элементу массива нужно добавить название текущего файла скрипта.

Последний раз редактировалось Stilet; 08.12.2010 в 09:02.
Ast вне форума Ответить с цитированием
Старый 07.12.2010, 09:37   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

действительные числа в целочисленный тип - не понятно. Только с потерей знаков после запятой. Опять же округлять в какую сторону.

Имя текущего скрипта:
Код:
$_SERVER['PHP_SELF']
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 07.12.2010, 20:05   #3
Ast
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 117
По умолчанию

ну так это и нужно с потерей знаков после запятой, после чего
при нахождении строки в значении элемента необходимо удалить его из массива и записать в другой массив, в котором будут храниться все строковые значения.
Ast вне форума Ответить с цитированием
Старый 08.12.2010, 07:23   #4
Ast
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 117
По умолчанию

PHP код:
unset($arr[0]);
$arr array_values($arr);
print_r($arr);
echo 
"</pre>";

нашёл у себя ошибку по unset:

print_r($array);
unset(
$array['c9f0f'],$array[37693],$array['e4da3'],$array['d3d94'],$array['a5bfc'],$array['6ea9a'],$array['6f492'],$array['9bf31']);

$array array_values($array);
print_r($array);
echo 
"</pre>"

Последний раз редактировалось Stilet; 08.12.2010 в 09:03.
Ast вне форума Ответить с цитированием
Старый 08.12.2010, 07:43   #5
Ast
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 117
По умолчанию

а как к каждому присвоить строковым значения в новом массиве?
Ast вне форума Ответить с цитированием
Старый 08.12.2010, 09:18   #6
Ast
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 117
По умолчанию

или как создать новый массив из строк которые удаляем?
Ast вне форума Ответить с цитированием
Старый 09.12.2010, 08:43   #7
Ast
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 117
По умолчанию

можете помочь?
Ast вне форума Ответить с цитированием
Старый 09.12.2010, 09:26   #8
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Удаляет строковые значения из массива arr и помещает их в массив arr2, добавляя в конец название текущего скрипта.
Код:
foreach($arr as $key => $val)
{
 if(!is_numeric($val))
 {
  $arr2[$key]=$val." ".$_SERVER['PHP_SELF'];
  unset($arr[$key]);
 };
}
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 09.12.2010, 10:34   #9
Ast
Форумчанин
 
Регистрация: 06.12.2010
Сообщений: 117
По умолчанию

спасибо...большое
про элементы массива так и не узнал...
как их привести к целочисленному виду с потерей знаков после запятой?
Ast вне форума Ответить с цитированием
Старый 09.12.2010, 11:30   #10
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Посмотри картинку , как это ищут.
Первая же ссылка в поиске дала мне ответ на твой вопрос.

Код:
foreach($arr as $key => $val)
{
 if(!is_numeric($val))
 {
  $arr2[$key]=$val." ".$_SERVER['PHP_SELF'];
  unset($arr[$key]);
 }
 else
 {$arr[$key] = (int)($arr[$key]);}
 ;
}
Изображения
Тип файла: jpg 1.jpg (15.3 Кб, 59 просмотров)
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
PHP test.php?a=1&b=1 не работает передача параметров бедный_студент PHP 5 25.08.2010 23:08
Преобразование HTML-PHP в PHP с запуском в командной строке. TERAB1T PHP 4 01.06.2010 14:14
Задание / Си Drozvd Помощь студентам 6 11.08.2009 06:33
Задание по PHP, создания баз данных Faven PHP 1 10.05.2009 19:59