LinuxForum.Fans
Тема

обновился php

Автор: skyinfo 6 сообщений 2046 просмотров
#327221

обновил php... отсюда как обычно пошли неприятности.

PHP Notice: Undefined offset: 1 in...

не работает скрипт... ругается на строку

text
for ($i = 1; $i <= $data->sheets[1]['numRows']; $i++) {

вот из этого куска

Показать
text
$cur_i = 0;
for ($i = 1; $i < $data->sheets[1]['numRows']; $i++) {
     if($data->sheets[1]['cells'][$i][8] != ""){
    if($cur_i == 0){
$cur_i++;

#327228

А какова размерность sheets ? Может вы обращаетесь в несуществующему элементу ?

text

<?php
   $a[0][1] = "hello";
   $a[0][2] = "hello2";
   echo $a[1][2];
?>


PHP Notice: Undefined offset: 1 in

Вероятней всего ваш массив комплектуется динамически. И из за изменения синтаксиса этой функции(из за перехода на новую версию), массив выглядит не так как нужно.

#327251

возможно я нашёл причину

text
$cur_i = 0;
for ($i = 1; $i < $data->sheets[1]['numRows']; $i++) {
     if($data->sheets[1]['cells'][$i][8] != ""){
    if($cur_i == 0){
$cur_i++;
    }else{
        $sql = "SELECT * FROM av_product WHERE sku = '".$data->sheets[1]['cells'][$i][2]."'";
        $cur_product_query = mysql_query($sql) or die('Query failed: ' . mysql_error());
        $cur_product = mysql_fetch_array($cur_product_query);
        
if(!is_numeric(trim($data->sheets[1]['cells'][$i][8])))        
$product_count = 5;
else $product_count = $data->sheets[1]['cells'][$i][8];
        if($cur_product['sku'] != ""){

вот эта переменная

text
$data->sheets[1]['cells'][$i][8]

, раньше была формата 1, а5;
2, а5;
3, a5....
сейчас же эта переменная по мои данным поменялась и стала формата 1, а;
2, a;
3, 50;
4, a ....
а учитывая, что это изначально цикл...там он и застревает, так как не подходит проверка

text
!is_numeric(trim

Вопрос, как задать проверку, на числовые и буквенные значения.

text
isset

завершает той же ошибкой, так как есть значения массива 0, а; либо "", a;

#327428

изменил формат переменных на прежний.... ошибка не ушла.... ругается на строчку

text
for ($i = 1; $i < $data->sheets[1]['numRows']; $i++) {
#327437

посмотрите что находится в массиве по данному адресу

text

<?php 
 print_r ($data->sheets);
?>
#327441

первый вывод был пустой, но ....

не могу в это поверить, сейчас не с того не с сего всё работает ...

прошу простить... проблема решилась сама по себе.... изменений проведено не было...

Зы. с чем связанно пока выяснить не могу, одно из предположений...бился xls файл при закачке через sftp

Войдите или зарегистрируйтесь, чтобы ответить.