Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
|

06.08.2009, 21:08
|
|
Познающий
Регистрация: 20.02.2008
Сообщений: 82
Провел на форуме: 107625
Репутация:
2
|
|
Значит, дан многомерный массив, содержащий в себе породы собак:
PHP код:
Array
(
[0] => Array
(
[id] => 6748
[name] => Акита-ину
[popularity] => 2[listings_count] => 0
[kirname] => akita-inu
)
[1] => Array
(
[id] => 6722
[name] => Американский бульдог
[popularity] => 3[listings_count] => 0
[kirname] => amerikanskij_bulqdog
)
[2] => Array
(
[id] => 6711
[name] => Английский бульдог
[popularity] => 4[listings_count] => 0
[kirname] => anglijskij_bulqdog
)
..................
)
Как этот массив отсортировать так, что бы элементы (а именно 'подмассивы'), содержащие [name] => Дворняжка маленькая, [name] => Дворняжка средняя и [name] => Дворняжка крупная, шли первыми в этом массиве? Вроде, надо как-то через usort, но не получается..
|
|
|

06.08.2009, 21:11
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
PHP код:
move_array_element($input, 'b', 2); /* сдвинуть элемент с ключом 'b' на 2 позиции "вперед" */
Сама функция
PHP код:
unction move_array_element(&$array, $element_key, $offset, $bubble_effect=true)
{
if (empty($array) || !is_array($array))
return false;
if (!array_key_exists($element_key, $array))
return false;
$offset=(int)$offset;
if ($offset===0)
return false;
// get keys and determine positions
$keys=array_keys($array);
$element_position=array_shift(array_keys($keys, $element_key));
$last_position=array_pop(array_keys($keys));
$new_position=$element_position+$offset;
if ($new_position<0)
$new_position=0;
if ($new_position>$last_position)
$new_position=$last_position;
// exchange keys
if ((abs($offset)===1) || ($bubble_effect!==true))
return exchange_array_elements($array, $keys[$element_position], $keys[$new_position]);
else
{
$offset_increment=$offset>0 ? 1 : -1;
$buffer_position=$element_position;
while ($buffer_position!==$new_position)
{
$keys=array_keys($array);
exchange_array_elements($array, $keys[$buffer_position], $keys[$buffer_position+$offset_increment]);
$buffer_position+=$offset_increment;
}
return true;
}
}
|
|
|

06.08.2009, 21:13
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
PHP код:
exchange_array_elements($input, 'a', 'd'); /* поменять местами элемент 'a' и 'd' */
Сама функция:
PHP код:
function exchange_array_elements(&$array, $key_source, $key_target)
{
if (empty($array) || !is_array($array))
return false;
if (($key_source==$key_target))
return false;
// find keys positions
$keys_positions=array_keys($array);
$key_source_position=array_shift(array_keys($keys_positions, $key_source));
$key_target_position=array_shift(array_keys($keys_positions, $key_target));
// exchange and sort postitions
if (($key_source_position!==null) && ($key_target_position!==null))
{
$buffer=$keys_positions[$key_source_position];
$keys_positions[$key_source_position]=$keys_positions[$key_target_position];
$keys_positions[$key_target_position]=$buffer;
ksort($keys_positions);
// write array values in new sequence
$new_array=array();
foreach ($keys_positions as $key)
{
$new_array[$key]=$array[$key];
unset($array[$key]);
}
$array=$new_array;
return true;
}
return false;
}
Юзай ту что удобнее
|
|
|

06.08.2009, 21:52
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
Architek86 Если нужно отсортировать по полю name по алфавиту - то так:
PHP код:
$input = array(
array('id'=>6722, 'name'=>'Американский бульдог','popularity'=>2,'listings_count'=>0,'kirname'=>'amerikanskij_bulqdog'),
array('id'=>6748, 'name'=>'Акита-ину','popularity'=>2,'listings_count'=>0,'kirname'=>'akita-inu'),
array('id'=>6711 , 'name'=>'Английский бульдог','popularity'=>2,'listings_count'=>0,'kirname'=>'anglijskij_bulqdog')
);
function cmp($a,$b) { return strnatcmp($a['name'],$b['name']); }
print_r($input);
usort($input,'cmp');
print_r($input);
З.Ы. Ваше задание не совсем понятно, входной массив дан один, а, когда говорите про отсортированный - уже другие имена
|
|
|

06.08.2009, 23:40
|
|
Постоянный
Регистрация: 24.11.2008
Сообщений: 416
Провел на форуме: 910902
Репутация:
100
|
|
кароче вот весь код
PHP код:
<?php
$myFile = "form.txt";
if ($_GET) {
$fh = fopen($myFile, 'w+') or die("can't open file");
$stringData = $_GET['name']."\n";
fwrite($fh, $stringData);
fclose($fh);
} else {
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
}
?>
<p>Hello
<?php
if (isset($_GET['name'])) {
echo ' '.$_GET['name'];
} ?></p>
в файл записывает, а так не выводит что за бред?кривые руки?
|
|
|

06.08.2009, 23:47
|
|
Он хакер.
Регистрация: 01.11.2008
Сообщений: 1,756
Провел на форуме: 6462214
Репутация:
3171
|
|
Сообщение от SaiRus
кароче вот весь код
PHP код:
<?php
$myFile = "form.txt";
if ($_GET) {
$fh = fopen($myFile, 'w+') or die("can't open file");
$stringData = $_GET['name']."\n";
fwrite($fh, $stringData);
fclose($fh);
} else {
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
}
?>
<p>Hello
<?php
if (isset($_GET['name'])) {
echo ' '.$_GET['name'];
} ?></p>
в файл записывает, а так не выводит что за бред?кривые руки?
Ты угадал.НЕ пробывал печататься на govnokod.ru? Мне кажеца ты был бы популярен)
У тебя слишком много лишнего кода.И проверки проводяться както о глупому.
|
|
|

06.08.2009, 23:49
|
|
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме: 2735257
Репутация:
103
|
|
SaiRus,
Кривые =)
$stringData = $_GET['name']."\n";
присваиваем переменной $stringData = полученную из урл ?name
if (isset($_GET['name'])) {
echo ' '.$_GET['name']; }
Дальше думаю понятно =)
Или меняй местами
$_GET['name'] = $stringData."\n";
Или проверяй и выводи $stringData
И я кстати не понял зачем этот код
if ($_GET) - к чему это? И вообще что он проверяет? глобальную переменную GET не врет ли она 
Последний раз редактировалось KaMiKadZe; 06.08.2009 в 23:51..
|
|
|

06.08.2009, 23:53
|
|
Постоянный
Регистрация: 24.11.2008
Сообщений: 416
Провел на форуме: 910902
Репутация:
100
|
|
Сообщение от m0Hze
Ты угадал.НЕ пробывал печататься на govnokod.ru? Мне кажеца ты был бы популярен)
У тебя слишком много лишнего кода.И проверки проводяться както о глупому.
ясно, только ответ на 1 вопрос пришел а на самый важный ты чет не ответил... 
|
|
|

06.08.2009, 23:57
|
|
Постоянный
Регистрация: 24.11.2008
Сообщений: 416
Провел на форуме: 910902
Репутация:
100
|
|
Сообщение от KaMiKadZe
SaiRus,
Кривые =)
$stringData = $_GET['name']."\n";
присваиваем переменной $stringData = полученную из урл ?name
if (isset($_GET['name'])) {
echo ' '.$_GET['name']; }
Дальше думаю понятно =)
Или меняй местами
$_GET['name'] = $stringData."\n";
Или проверяй и выводи $stringData
И я кстати не понял зачем этот код
if ($_GET) - к чему это? И вообще что он проверяет? глобальную переменную GET не врет ли она 
в принципе верхний код мне нахер не нужен это пример автора LightWindow я не могу понять, почему он переменной $stringData присваивает и выводит ее в файл к примеру, а когда я напрямую вывожу эту переменную он ее не выводит....
|
|
|

07.08.2009, 00:00
|
|
Участник форума
Регистрация: 24.02.2006
Сообщений: 206
Провел на форуме: 2735257
Репутация:
103
|
|
Короче я не знаю зачем этот код, но думаю вот так должно работать и пишет и выводит...
PHP код:
<?php
$myFile = "form.txt";
if(isset($_GET['name'])) {
$fh = fopen($myFile, 'w+') or die("can't open file");
$stringData = $_GET['name']."\n";
fwrite($fh, $stringData);
fclose($fh);
} else {
$fh = fopen($myFile, 'r');
$theData = fread($fh, filesize($myFile));
fclose($fh);
}
?>
<p>Hello
<?php
if(isset($_GET['name'])) {
echo ' '.$_GET['name'];
}
?></p>
Работает так you_file.php?name=Putin
p.s Только что понял что от плохого кода появляются плохие мысли и рождают еще худший код 
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|