2014-12-19 2 views
-1

За прошедшую неделю я работаю на PHP страницу для отображения онлайн внутренний запас устройствPHP Отображаемые значения определенных ключей из одного массива на основе значений из другого массива

Проблема я столкнулся и где я застрял следующее:

у меня есть 2 массивов, следующим образом:

  • первая создаются с помощью функции explode() на строке;
  • второй создается с использованием foreach() на $query->result_array() полученные от MySQL опроса запроса

Когда выход оба массива, то выглядеть следующим образом:

// 1st array 

Array (
    [0] => NAME 
    [1] => TAG 
    [2] => SERVICE 
    [3] => TYPE 
    [4] => COMMENT 
    [5] => LOCATION 
    ) 

// 2nd array 

Array (
    [ID] => 3 
    [ID_CAT] => 10 
    [NAME] => test 
    [TAG] => 123456789 
    [SERVICE] => PAID 
    [TYPE] => SIM 
    [COMMENT] => Needs activation 
    [LOCATION] => A city 
    [STATUS] => Available 
) 

Массивы не являются такой же длины, :

  • первый имеет длину 6
  • второй имеет длина 9

Мой вопрос: Как показать значения 2-го массива на основе совпадения, полученного в 1-м массиве?

На самом деле матч что-то вроде этого: if (1st array value == 2nd array key) { output }

Я попытался foreach() и for() цикл, но это будет только показать мне только 1 значение ($i всегда 0)

Вот двойные foreach() петли я попробовал:

foreach($1st_array as $key1st => $value1st) { 
    foreach($2nd_array as $values2nd) { 
     if (strcmp($key1st , $values2nd) == 0) { print '<td>'.$value1st.'</td>'; } 
    } 
} 

... и вот это foreach() и for() петли Я пробовал:

foreach($1st_array as $key1st => $value1st) { 
    for($i = 0; $i < count($2nd_array); $i++) { 
     if ($key1st == $2nd_array[$i]) { 
     print '<td id="'.$i.'">'.$value1st.'</td>'; 
     } 
    } 
} 

Любые идеи о том, как я могу сделать эту работу?

Это дает мне головную боль :(

Все ответы будут глубоко признателен!

Мои наилучшие пожелания, Майкл

СПУСТЯ EDIT:

@Nevermind: Выход я хочу от 2-х массивов будет выглядеть так:

  • Название: ' тест '
  • Метка:' 123456789 '
  • служба: 'ПЛАТНЫЕ'
  • Тип: 'SIM'
  • Комментарий: 'Требуется активация'
  • Расположение: 'A' город

@Не паникуйте: Правильно, «STATUS «Опечатка! К сожалению о том, что

+1

что ожидается выход с примерами вашего массива1 и 2? – Neverever

+0

'foreach ($ arr1 as $ val) if (isset ($ arr2 [$ val])) echo $ arr2 [$ val];' – DarkBee

+0

Вы помещаете запятые в массив? Скорее, не так ли? на это трудно смотреть. – craniumonempty

ответ

-1

Try используя isset() со значением 1-го массива в качестве ключа 2-го массива -

foreach($1st_array as $key){ 
    if(isset($2nd_array[$key])){ 
     echo $key . ": " . $2nd_array[$key] 
    } 
} 
-1

Согласно вашему описанию, вы хотели бы объединить два массива, отображение значений первый массив к клавишам второго.

Попробуйте следующее.

<?php 

$array1 = Array (
    'NAME', 
    'TAG', 
    'SERVICE', 
    'TYPE', 
    'COMMENT', 
    'LOCATION' 
    ); 

$array2 = $favorite_foods = Array (
    'ID'=> 3, 
    'ID_CAT' => 10, 
    'NAME' => 'test', 
    'TAG'=> 123456789, 
    'SERVICE' => 'PAID', 
    'TYPE' => 'SIM', 
    'COMMENT' => 'Needs activation', 
    'LOCATION' => 'A city', 
    'STATUS' => 'Available' 
); 



foreach ($array2 as $key => $value): 
//search the value in array, which is the 
//key of the array2. 
$position = array_search($key, $array1); 

    if ($position !== false): 
      echo " $key<br/>"; 
    else: 

     echo "-NO MATCH-<br/>"; 

    endif; 

endforeach; 


--Output-- 

-NO MATCH- 
-NO MATCH- 
NAME 
TAG 
SERVICE 
TYPE 
COMMENT 
LOCATION 
-NO MATCH- 
Смежные вопросы