Поиск значений в многомерном массиве, а затем вывод в массив других значений - PullRequest
1 голос
/ 12 октября 2010

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

Например, используя приведенные ниже примеры данных.Как бы вы порекомендовали мне искать в массиве все массивы, которые имеют ключ problem_id и значение 3, а затем выводить его значение ключа problem_update_date и значение ключа problem_update_text.Тогда продолжайте искать, чтобы найти следующее вхождение?

Заранее спасибо, я очень усердно искал ответ и считаю, что у меня над головой!

Вывод print_r($updates);

CI_DB_mysql_result Object
(
  [conn_id] => Resource id #30
  [result_id] => Resource id #35
  [result_array] => Array()
  [result_object] => Array()
  [current_row] => 0
  [num_rows] => 5
  [row_data] => 
)

Выход print_r($updates->result_array());

Array
(
  [0] => Array
  (
    [problem_update_id] => 1
    [problem_id] => 3
    [problem_update_date] => 2010-10-01
    [problem_update_text] => Some details about a paricular issue
    [problem_update_active] => 1
  )

  [1] => Array
  (
    [problem_update_id] => 4
    [problem_id] => 3
    [problem_update_date] => 2010-10-01
    [problem_update_text] => Another update about the problem with an ID of 3
    [problem_update_active] => 1
  )

  [2] => Array
  (
    [problem_update_id] => 5
    [problem_id] => 4
    [problem_update_date] => 2010-10-12
    [problem_update_text] => An update about the problem with an ID of four
    [problem_update_active] => 1
  )

  [3] => Array
  (
    [problem_update_id] => 6
    [problem_id] => 4
    [problem_update_date] => 2010-10-12
    [problem_update_text] => An update about the problem with an ID of 6
    [problem_update_active] => 1
  )

  [4] => Array
  (
    [problem_update_id] => 7
    [problem_id] => 3
    [problem_update_date] => 2010-10-12
    [problem_update_text] => Some new update about the problem with the ID of 3
    [problem_update_active] => 1
  )
)

Ответы [ 3 ]

2 голосов
/ 12 октября 2010

Если вы просто хотите получить список problem_update для проблемы с идентификатором 3, почему бы вам не ограничить свой (мой) sql-statemant для повторного запуска только этих? WHERE problem.problem_id = 3

в любом случае:

foreach( $updates->result_array() as $update ) {
    if( 3 == $update['problem_id'] ) {
        echo $update['problem_update_date'] . ' : ' . $update['problem_update_text'];
    }
}
1 голос
/ 12 октября 2010

Извините, @maggie. Это почти то же самое, что вы написали, но по функциям. Надеюсь, что это поможет вам. Конечно, если я вас правильно понял.

function youAskedForIt( $some_array = array(), $value_to_search_for ) {

    foreach( $some_array as $value ) {

        if( ! isset( $value['problem_id'] ) || ! isset( $value['problem_update_date'] ) || ! isset( $value['problem_update_text'] ) ) {

            continue;

        }

        if( $value_to_search_for == $value['problem_id'] ) {

            echo $value['problem_update_date'] . ' => ' . $value['problem_update_text'] . "<br>\n";

        }

    }

}

youAskedForIt( $updates->result_array(), 3 );
0 голосов
/ 12 октября 2010

Мэгги права: вы не должны искать ключ, перебирая массив. Просто добавьте project_id = 3 как условие в SQL.

Либо используйте get_where():

$query = $this->db->get_where('my_table_name', array('problem_id' => 3));

foreach($query->result() as $row)
{
    echo $row->problem_update_date;
    echo $row->problem_update_text;
}

или where():

$this->db->where('project_id', 3);
$query = $this->db->get('my_table_name');

foreach($query->result() as $row)
{
    echo $row->problem_update_date;
    echo $row->problem_update_text;
}

Для получения дополнительной информации ознакомьтесь с отличной документацией Codeigniter:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...