#php #arrays
#php #массивы
Вопрос:
Я хочу получить столбец в PHP-массиве $slider
это :
array(6) {
[0]=>
array(1) {
["image"]=>
string(32) "themes/public/slideshow/ads1.jpg"
}
[1]=>
array(1) {
["title1"]=>
string(1) "."
}
[2]=>
array(1) {
["image"]=>
string(32) "themes/public/slideshow/ads2.jpg"
}
[3]=>
array(1) {
["title1"]=>
string(1) "."
}
[4]=>
array(1) {
["image"]=>
string(32) "themes/public/slideshow/ads3.jpg"
}
[5]=>
array(1) {
["title1"]=>
string(1) "."
}
}
когда я хочу получить столбец этого массива, php выдает ошибку Undefined index
!
эта ошибка существует на сервере, но не существует на localhost!
foreach ($slider as $slide)
{
$s = $slide['image'];
?>
<div>
<img u="image" src2="<?php echo $url . "/$s" ?> " />
</div>
<?php
}
?>
Неопределенный индекс: изображение в этой строке: $s = $slide[‘изображение’];
Комментарии:
1.
<img src2>
??? это не сработает; удалите2
, и чтоu=
должно представлять?2. @NikhilVaghela Неопределенное смещение: 6 в -> foreach ($ slider[6] как $ slide)
3. @Fred-ii- !синтаксис правильный !
Ответ №1:
Вы должны использовать isset
, чтобы проверить, существует ли данный ключ
$slider = array (
array (
'image' => "themes/public/slideshow/ads1.jpg"
),
array (
'title1'=>"."
),
array (
'image'=>"themes/public/slideshow/ads2.jpg"
),
array (
'title1'=>"."
),
array (
'image'=>"themes/public/slideshow/ads3.jpg"
),
array (
'title1'=>"."
),
);
$url = 'http://example.com';
foreach ($slider as $slide)
{
if (isset($slide['image'])) {
$s = $slide['image'];
echo $url . '/' . $s . '<br />';
}
}
Ответ №2:
Ошибка, которую вы получаете, довольно нормальная, из-за того, как вы $slider
построены!
Когда вы это делаете, foreach ($slider as $slide)
вы получаете последовательные $slide
элементы, которые альтернативно содержат image
или title1
: другими словами, один из двух элементов не содержит того image
индекса, который вы ищете.
Фактически, вот как вы должны построить свой массив:
array(6) {
[0]=>
array(2) {
["image"]=>
string(32) "themes/public/slideshow/ads1.jpg"
["title1"]=>
string(1) "."
}
[1]=>
array(2) {
["image"]=>
string(32) "themes/public/slideshow/ads2.jpg"
["title1"]=>
string(1) "."
}
[2]=>
array(2) {
["image"]=>
string(32) "themes/public/slideshow/ads3.jpg"
["title1"]=>
string(1) "."
}
}
Затем вы можете работать так, как ожидали…
Ответ №3:
Ваш массив содержит другие массивы, каждый из ваших массивов содержит одну строку. Но индексы всех этих подмассивов не совпадают. Иногда это так image
, иногда это так title1
. но в вашем коде вы используете только image
ключ в строке, $s = $slide['image'];
даже если это title1
один…
Поэтому проверьте, существует ли ключ, прежде чем использовать его :
if (array_key_exists('image', $slide) {
$s = $slide['image'];
?>
<div>
<img u="image" src2="<?php echo $url . "/$s" ?> " />
</div>
<?php
}