Jump to content
  • 0

По ключу узнать порядковый номер элемента в массиве


ekkl
 Share

Question

Всем доброго времени суток.

Есть ассоциативный массив (ключ значение)

По ключу мне нужно узнать какой элемент массива идет за ним

Например


<?php
$arr = array (
"qwe" => "val",
"tyu" => "val",
"hhhh" => "val",
"jjkk" => "val")
get_nextkey($arr, "tyu") //must return "hhhh"
get_nextkey($arr, "jjkk") //must return false (or null)

public static function get_nextkey(&$arr, $key)
{
for ($r=0; $r<count($arr); $r++)
{
if ($key == key($arr))
{
next($arr);
return key($arr);
}
next($arr);
}
}
//Но это же не выход? Или лучше варианта нет?

?>


Edited by ekkl
Link to comment
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Я бы сделал по-другому. Не знаю, что будет работать быстрее, но я думаю, что лучше использовать функции для работы с массивами:


<?php
function get_nextkey($array, $key){
if(array_key_exists($key, $array)){
$arrayKeys = array_keys($array);
$currentIndex = array_search($key, $arrayKeys);
$currentIndex++;
if(isset($arrayKeys[$currentIndex])){
return $arrayKeys[$currentIndex];
} else {
return false;
}
} else {
return false;
}
}
$arr = array("qwe" => "val","tyu" => "val2","hhhh" => "val3","jjkk" => "val4");
var_dump(get_nextkey($arr, "tyu"));
?>

Link to comment
Share on other sites

  • 0

по-моему тут реально два варианта, либо в цикле перебирать до нужного элемента(смещая указатель), либо использовать методы для работы с массивами array_keys, array_values, array_search

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Anechka
      Здравствуйте, как обратиться в foreach к массиву, название которого генерируется автоматически? Пробовала конкатенировать знак доллара с переменной в который точное название массива и потом уже на вход в foreach подавать эту переменную но так ничего не работает, как правильно? Спасибо!
    • By WhatIsHTML
      Тривиальная задача, но не получается решить ее адекватно.
      Хочу сделать одностраничный сайт, с контентом , который будет подгружаться с php.
      Т.е. у меня будет несколько блоков в html, которые будут изменяться динамически. Данные я хочу брать из php, где они хранятся в массиве.
      <div class="menu"> <a href="#">Home</a> <a href="#">Product</a> <a href="#">Customers</a> </div> <div id="content"></div> Есть файл php с простым массивом, который возвращается в js
      <?php $arrayName = array('title' => 'Scheduling, CRM, and Invoicing Web Application - FieldPulse Software'); echo json_encode($arrayName); ?> json_encode возвращает строку {"title":"Scheduling, CRM, and Invoicing Web Application - FieldPulse Software"}

      Функция js, которая срабатывает после клика на ссылку.
      function loadPage(url) { $.ajax({ type: "POST", url: "content.php", data: 'page=' + url, dataType: "html", success: function(msg) { if (parseInt(msg) != 0) { msg = msg.substring(1, msg.length - 1); //удаляем символы { } в начале и конце строки $array = msg.split(":"); // разбиваем строку на массив по символу ":" $('title').html($array['title']); // новый title берем из массива, но в данном случае такой ячейки нет alert(msg); //для наглядности, выводит {"title":"Scheduling, CRM, and Invoicing Web Application - FieldPulse Software"} } else { alert ('file empty!'); } } }); } В результате такого разбиения получаем обычный массив. Мне надо получить ассоциативный массив где будет ячейка с именем "title" и она будет содержать соотв. строку из пхп.
      Как адекватно превратить результат выполнения функции json_encode в ассоциативный массив, чтобы можно было заменить необходимые поля в html?
    • By gameviktor
      Хотел бы сделать тест с рандомными вопросами на PHP. В БД(MySql) 13 вопросов (с ответами):
      id name vopros otvet
      1 matem text 1
      2 matem text 3
      3 matem text 4
      4 matem text 1
      5 matem text 2
      6 matem text 1
      7 matem text 1
      8 russkiy text 5
      9 russkiy text 1
      10 russkiy text 3
      11 russkiy text 2
      12 russkiy text 2
      13 russkiy text 4
      И мне нужно вытащить вопросы только по русскому ( name='russkiy' ).
      В чём заключается вопрос:
      1) Как при входе в тест по русскому организовать поиск по name='russkiy' и записать все id в массив mass?
      2) Как выполнить рандомный вывод всех id, но при это чтобы они не повторялись.
      3) Вывод по id содержимое.
      Если есть у кого-нибуть другие варианты буду очень благодарен!=D
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy