@leopardo11

Как найти данные в массиве по ключу и вывести данные?

[Clients] => Array
        (
            [Client] => Array
                (
                    [ClientDetails] => Array
                        (
                            [clientName] => 
                            [clientContact] => 
                            [clientContactEmail] =>
                            [clientTelephone] =>
                        )

                    [properties] => Array
                        (


Нужно найти в массиве properties и вывести его содержимое. Какой оператор существует?
  • Вопрос задан
  • 2353 просмотра
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
А зачем ты удалил прошлый вопрос и создал новый?
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@Arik
Можно попробовать обойти весь массив
<?php

$Clients = Array
        (
            'Client' => Array
                (
                    'ClientDetails' => Array
                        (
                            'clientName' => '',
                            'clientContact' =>'',
                            'clientContactEmail' => 'client1@example.com',
                            'clientTelephone' => '',
                        ),

                    'properties' => Array
                        (
                            'Property' => Array
                                (
                                    0 => Array
                                        (
                                            'propertyid' => '',
                                            'lastUpdateDate' => '',
                                            'category' => '',
                                            'Address' =>'',
                                        )
                                )
                            ),
                ),
            'Client2' => Array
                (
                    'ClientDetails' => Array
                        (
                            'clientName' => '',
                            'clientContact' =>'',
                            'clientContactEmail' => 'client2@example.com',
                            'clientTelephone' => '',
                        ),

                    'properties' => Array
                        (
                            'Property' => Array
                                (
                                    0 => Array
                                        (
                                            'propertyid' => '',
                                            'lastUpdateDate' => '',
                                            'category' => '',
                                            'Address' =>'',
                                        )
                                )
                            ),
                )
        );

function  mySearch($search, $data, $parents = array())
    {
    $return = [];

    if(is_array($data))
        {
        foreach($data as $key => $value)
            {
            if($key === $search)
                {
                $return[] = array (
                    'key' => array_merge($parents, array($key)),
                    'value' => $value,
                    );
                }
            else if(is_array($value))
                {
                $return = array_merge($return, mySearch($search, $value, array_merge($parents, array($key))));
                }
            }
        }

    return $return;
    }

header('content-type: text/html; charset=utf-8;');
echo '<pre>';
@print_r(mySearch('clientContactEmail' , $Clients));
echo '</pre>';
exit(__FILE__ .': '. __LINE__);
Ответ написан
Комментировать
MintTea
@MintTea
Я делал что-то похожее, когда мне надо было вытащить данные по ключу из массива с неизвестной структурой. Можете доработать под себя:
$properties = array();
array_walk_recursive($rawData, function($value, $key) use(&$properties) {
    if ($key === 'properties') {
        $properties = $value;
    }
});
Ответ написан
@leopardo11 Автор вопроса
Есть столбец с уникальнам айди, если при импорте такой уже сушествует, то нужно отсеивать такие листинги, как будет лучше, при фориче и записи в бд проверять методом exist (table name , collumn) или заранее вытащить и запихнуть в какой-нибудь массив и проверять до форича?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы