День добрый! У меня такая проблема, помогите решить пожалуйста: есть api от megaindex.com https://ru.megaindex.com/api/catalog/view/1 (примеры на github https://github.com/megaindexcom/MegaIndex.com-API) мне нужно вытянуть обратные ссылки сайтов конкурентов. Я рисую такую конструкцию: PHP: <?php if(isset($_POST['links'])) { include_once 'megaindex.php'; $key = 'свой апи'; $mi = new MegaIndex($key); echo '<h1>Back links</h1>'; $param = array('domain' => $_POST['your_url'], 'count' => 1, 'link_per_domain' => 1); $array = $mi->get('backlinks', $param); var_dump($array); } ?> Файл megaindex.php взят с github по ссылке выше. В $_POST['your_url'] отдаю значение через форму <input type="text" name="your_url" /> из html страницы. на выходе получаю: Код (Text): array(3) { ["status"] => int(1)["data"] => array(1) { [0] => array(16) { ["domain_from"] => string(20) "В«www.1ovep1anet.ru/" ["domain_to"] => string(44) "google.com/chrome/browser/desktop/index.html" ["link_text"] => string(28) "Скачать Google Chrome" ["nofollow"] => int(1)["noindex"] => int(0)["exlinks"] => int(21)["redirect"] => int(0)["count"] => int(63)["tic"] => int(0)["link_rank"] => int(0)["domain_rank"] => int(0)["level_from"] => int(0)["ip"] => string(13) "8.185.134.204" ["add"] => string(10) "2015-09-09" ["check"] => string(10) "2016-08-15" ["del"] => string(0) "" } }["request_time"] => float(9.103) } Мне нужна только пятая строка Код (Text): "В«www.1ovep1anet.ru/" ["domain_to"] => string(44). Как на выходе получить только ее??Подскажите пожалуйста. Перепробовал уже кучу вариантов, спалил кучу денег на запросы к api но результата пока ноль... P/S Ребят, я неделю назад впервые взял в руки книжку по JavaScript, а вчера можно сказать впервые столкнулся с php (не считая каждодневной правки wordpress шаблонов). Работаю seo-шником, но немного кодить умею. Возможно как-то неправильно сформулировал вопрос, если что извиняйте!)
var_dump($array["status"][0]['domain_from']); вот такая конструкция не работает((Или я не так что-то делаю?Про var_dump читал, гугл меня уже за формулировку запросов тихо ненавидит, но решение не нахожу(((
не работает - это не понятно. Понятно: выдаёт вот такой мат. А вообще, приведи исходный массив не в var_dump, а в var_export, чтоб можно было скопировать к себе и попробовать.
Если получать данные через var_export($array); выдает: Код (Text): array ( 'status' => 1, 'data' => array ( 0 => array ( 'domain_from' => '«www.1ovep1anet.ru/', 'domain_to' => 'google.com/chrome/browser/desktop/index.html', 'link_text' => 'Скачать Google Chrome', 'nofollow' => 1, 'noindex' => 0, 'exlinks' => 21, 'redirect' => 0, 'count' => 63, 'tic' => 0, 'link_rank' => 0, 'domain_rank' => 0, 'level_from' => 0, 'ip' => '8.185.134.204', 'add' => '2015-09-09', 'check' => '2016-08-15', 'del' => '', ), ), 'request_time' => 6.82800000000000029132252166164107620716094970703125, ) если через var_dump($array["status"][0]['domain_from']); или var_export($array["status"][0]['domain_from']); выдает null
@servitpol ты копировал результат не из исходного кода браузера? В исходном коде, обычно не в одну строку var_export даёт результат для массива, а с отступами. В документации по массивам всё понятно? https://secure.php.net/manual/ru/language.types.array.php
@denis01сори, не подумал: Код (Text): <h1>Back links</h1>array ( 'status' => 1, 'data' => array ( 0 => array ( 'domain_from' => '«www.1ovep1anet.ru/', 'domain_to' => 'google.com/chrome/browser/desktop/index.html', 'link_text' => 'Скачать Google Chrome', 'nofollow' => 1, 'noindex' => 0, 'exlinks' => 21, 'redirect' => 0, 'count' => 63, 'tic' => 0, 'link_rank' => 0, 'domain_rank' => 0, 'level_from' => 0, 'ip' => '8.185.134.204', 'add' => '2015-09-09', 'check' => '2016-08-15', 'del' => '', ), ), 'request_time' => 10.0920000000000005258016244624741375446319580078125, ) По массивам в php пока вроде все понтяно, они похожи на объекты в javascript, читаю дальше...
Мне кажется автор не понимает что делает var_damp() это дамп информации о переменной. Он не для вывода данных в рабочий проект. Даже если и получить нужное значение вардампом это будет что-то типа string(31) "Тестовая строка"
Заработала конструкция var_dump($array['data']['0']['domain_from']); !!!УРААААА!!!Спасибо большое)) --- Добавлено --- @bikerlex да, действительно, я пока малосоображаю, но результата string(20) "«www.1ovep1anet.ru/" мне достаточно! Теперь буду рисовать конструкцию с загрузкой файлов и обработкой Спасибо за ссылку, за два дня она мимо меня как-то прошла на этом сайте, хотя казалось перевернул его верх дном!
@bikerlex ооооо вообще то что нужно, спасибо. Я даже как-то не подумал использовать echo после того как конструкция заработала. У меня теперь другая проблема, после того как изменил занчение Код (Text): 'count' => 1, на Код (Text): 'count' => 2, попрежнему выводится только один урл, хотя код уже имеет вид Код (Text): <h1>Back links</h1>array ( 'status' => 1, 'data' => array ( 0 => array ( 'domain_from' => '«www.1ovep1anet.ru/', 'domain_to' => 'google.com/chrome/browser/desktop/index.html', 'link_text' => 'Скачать Google Chrome', 'nofollow' => 1, 'noindex' => 0, 'exlinks' => 21, 'redirect' => 0, 'count' => 63, 'tic' => 0, 'link_rank' => 0, 'domain_rank' => 0, 'level_from' => 0, 'ip' => '8.185.134.204', 'add' => '2015-09-09', 'check' => '2016-08-15', 'del' => '', ), 1 => array ( 'domain_from' => '«www.bi24.ru/a-support_search/', 'domain_to' => 'google.com/chrome/browser/desktop/index.html', 'link_text' => 'Скачать Google Chrome', 'nofollow' => 1, 'noindex' => 0, 'exlinks' => 6, 'redirect' => 0, 'count' => 48, 'tic' => 0, 'link_rank' => 0, 'domain_rank' => 0, 'level_from' => 1, 'ip' => '7.185.134.204', 'add' => '2015-09-13', 'check' => '2016-07-31', 'del' => '', ), ), 'request_time' => 7.20099999999999962341235004714690148830413818359375, )« Т.е. мне теперь нужно соорудить какой-то цикл for или foreach...
давай его, делай по $array['data'] в цикле уже $value['domain_from'] будет доступна, понятно как так вышло?
Да, принцип понял. Пытаюсь разобраться с foreach, но пока только 500 код вижу(( https://secure.php.net/manual/ru/control-structures.foreach.php по этой ссылке столько вариантов использования, не могу въехать какой из них подходит мне. Меня все наталкивает на мысль использовать цикл for. По логике, в конструкции Код (Text): echo $array['data']['0']['domain_from'] мне нужно менять только Код (Text): ['0'] т.е. я бы записал его к примеру как [$b] и перебирал через конструкцию Код (Text): for ($b = 0; ; $b++) { }
@bikerlex стыдно показывать, т.к. делаю методом тыка...ну вот один из последних вариантов: PHP: echo '<h1>Back links</h1>'; $param = array('domain' => $_POST['your_url'], 'count' => 2, 'link_per_domain' => 1); $array = $mi->get('backlinks', $param); $count = count($array); for ($i = 0; $i < $count; $i++) { echo $array['data']['$i']['domain_from']"<br />\n"; }
Код (Text): echo '<h1>Back links</h1>'; $param = array('domain' => $_POST['your_url'], 'count' => 10, 'link_per_domain' => 1); $array = $mi->get('backlinks', $param); for($i = 0; ; ++$i) { echo $array['data'][$i]['domain_from']; echo"<br>"; } } работает Блин, такой кайф получаю)По-моему я наркоманом становлюсь))
@servitpol Ещё для перебора массивов используют цикл foreach например. PHP: $newArr = ['color1' => 'red', 'color2' => 'yellow']; foreach ($newArr As $key => $value) { echo $key; echo '<br>'; echo $value; } Вставь к себе и посмотри на результат ) И посмотри на результат