ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11721  
Старый 06.08.2009, 21:08
Аватар для Architek86
Architek86
Познающий
Регистрация: 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, но не получается..
 
Ответить с цитированием

  #11722  
Старый 06.08.2009, 21:11
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 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>: -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;
        }

 
Ответить с цитированием

  #11723  
Старый 06.08.2009, 21:13
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 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;

Юзай ту что удобнее
 
Ответить с цитированием

  #11724  
Старый 06.08.2009, 21:52
Аватар для Gifts
Gifts
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); 
З.Ы. Ваше задание не совсем понятно, входной массив дан один, а, когда говорите про отсортированный - уже другие имена
 
Ответить с цитированием

  #11725  
Старый 06.08.2009, 23:40
Аватар для SaiRus
SaiRus
Постоянный
Регистрация: 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($fhfilesize($myFile));
    
fclose($fh);
}

?>


<p>Hello
<?php 
if (isset($_GET['name'])) {
                            echo 
' '.$_GET['name'];
                            } 
?></p>
в файл записывает, а так не выводит что за бред?кривые руки?
 
Ответить с цитированием

  #11726  
Старый 06.08.2009, 23:47
Аватар для m0Hze
m0Hze
Он хакер.
Регистрация: 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($fhfilesize($myFile));
    
fclose($fh);
}

?>


<p>Hello
<?php 
if (isset($_GET['name'])) {
                            echo 
' '.$_GET['name'];
                            } 
?></p>
в файл записывает, а так не выводит что за бред?кривые руки?
Ты угадал.НЕ пробывал печататься на govnokod.ru? Мне кажеца ты был бы популярен)
У тебя слишком много лишнего кода.И проверки проводяться както о глупому.
 
Ответить с цитированием

  #11727  
Старый 06.08.2009, 23:49
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 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..
 
Ответить с цитированием

  #11728  
Старый 06.08.2009, 23:53
Аватар для SaiRus
SaiRus
Постоянный
Регистрация: 24.11.2008
Сообщений: 416
Провел на форуме:
910902

Репутация: 100
По умолчанию

Цитата:
Сообщение от m0Hze  
Ты угадал.НЕ пробывал печататься на govnokod.ru? Мне кажеца ты был бы популярен)
У тебя слишком много лишнего кода.И проверки проводяться както о глупому.
ясно, только ответ на 1 вопрос пришел а на самый важный ты чет не ответил...
 
Ответить с цитированием

  #11729  
Старый 06.08.2009, 23:57
Аватар для SaiRus
SaiRus
Постоянный
Регистрация: 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 присваивает и выводит ее в файл к примеру, а когда я напрямую вывожу эту переменную он ее не выводит....
 
Ответить с цитированием

  #11730  
Старый 07.08.2009, 00:00
Аватар для KaMiKadZe
KaMiKadZe
Участник форума
Регистрация: 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($fhfilesize($myFile));
    
fclose($fh);
}
?>


<p>Hello
<?php
if(isset($_GET['name'])) {
    echo 
' '.$_GET['name'];
}
?></p>
Работает так you_file.php?name=Putin
p.s Только что понял что от плохого кода появляются плохие мысли и рождают еще худший код
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Delphi, .NET, Asm 5420 17.06.2010 13:33
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Форумы 26 15.02.2005 22:57



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ