PHP "Geçersiz bağımsız değişken) (foreach için verilen"

4 Cevap php

Burada PHP 5 ile çalışıyorum. Ben aşağıdaki kodu vardır:

$data = json_decode($_POST['data']);
foreach ($data as $obj) {
......

}

Ben hata foreach fonksiyonu ile satırında "foreach için verilen geçersiz bağımsız değişken ()" olsun. Bu sadece benim paylaşılan sunucu hesabınızda olur. Benim yerel web sunucusu üzerinde her şey çalışıyor. $ _POST ['Veri'] geçerli json dize içerir. print_r ($ veri); hiçbir şey gösterir ... Ne oluyor burada yanlış?

EDIT: Bu gerçekten benim aklımı alıyor ama $ _POST ['veri'] string AJAX ile gönderilir ediliyor ve ben Kundakçı ile dize yakalamak ve bunun gibi bir JSON sınama dosyası kopyalanır:

$data = json_decode('[{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"}]');
print_r($data);

Olması gerektiği gibi ve düzgün, çıkıyor. O yüzden bu sorunları işlevinden daha fazla kod yapıştırın ediyorum:

function saveData($table)
{
    $data = json_decode($_POST['data']);	

    $db = new MySQL(true);
    $db->TransactionBegin();

    foreach ($data as $obj) {
  $id = $obj->id;
  $name = $obj->name;
}
}

Bu kontrol edin: Bunu yaparsam:

$data = json_decode('[{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"},{"id":3,"name":"John","surname":"Smith","number":6633,"city":"The city","area":"West","street":"West","numar":"15","other":"none"}]');
foreach ($data as $obj) {
......

}

Mükemmel çalışıyor! Bu yüzden ne zaman e sorun var gibi görünüyor:

$data = json_decode($_POST['data']);

Ama $ _POST ['veri'] mükemmel bir json dize verir. Bu beni deli ediyor.

Herhangi bir fikir?

Herhangi bir fikir?

4 Cevap

magic_quotes_gpc ... php.net alıntı:

When on, all ' (single-quote), " (double quote), \ (backslash) and NULL characters are escaped with a backslash automatically.

O sihirli tırnak paylaşılan sunucu üzerinde etkindir çıkıyor gibi. Cevaplar için teşekkür ederim.

var_dump($data) muhtemelen $data olduğunu gösterecektir null. Dan the docs:

NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

Davranış, paylaşılan bir sunucuya özel ise, belki de yerel sunucuda daha düşük bir özyineleme sınırı vardır.

json_decode PHP 5 >= 5.2.0 PECL json >= 1.2.0, bu yüzden benim tahminim barındırma düşük bir sürümünü kullanıyor olmasıdır ile sadece mevcut.

$data geçersiz JSON nedir? (Bozuk veya boş Ya)