programing

주의: 정의되지 않은 오프셋: 0 in

firstcheck 2023. 1. 21. 10:07
반응형

주의: 정의되지 않은 오프셋: 0 in

이 PHP 에러가 발생하고 있는데, 무슨 뜻입니까?

Notice: Undefined offset: 0 in 
C:\xampp\htdocs\mywebsite\reddit_vote_tut\src\votes.php on line 41

이 코드부터:

<?php 
include("config.php"); 

function getAllVotes($id) 
{ 
    $votes = array(); 
    $q = "SELECT * FROM entries WHERE id = $id"; 
    $r = mysql_query($q); 
    if(mysql_num_rows($r)==1)//id found in the table 
    { 
        $row = mysql_fetch_assoc($r); 
        $votes[0] = $row['votes_up']; 
        $votes[1] = $row['votes_down']; 
    } 
    return $votes; 
} 

function getEffectiveVotes($id) 
{ 
        $votes = getAllVotes($id); 
        $effectiveVote = $votes[0] - $votes[1];    //ERROR THROWN HERE
        return $effectiveVote; 
} 

$id = $_POST['id']; 
$action = $_POST['action']; 

//get the current votes 
$cur_votes = getAllVotes($id); 

//ok, now update the votes 

if($action=='vote_up') //voting up 
{ 

    $votes_up = $cur_votes[0]+1;     //AND ERROR THROWN HERE


    $q = "UPDATE threads SET votes_up = $votes_up WHERE id = $id"; 
} 
elseif($action=='vote_down')
{ 
    $votes_down = $cur_votes[1]+1; 
    $q = "UPDATE threads SET votes_down = $votes_down WHERE id = $id"; 
} 

$r = mysql_query($q); 
if($r)
{ 
    $effectiveVote = getEffectiveVotes($id); 
    echo $effectiveVote." votes"; 
} 
elseif(!$r) //voting failed 
{ 
    echo "Failed!"; 
} 
?>

있어요.0$votes이 키가 포함되지 않은 배열입니다.

" " "$votes 않기 에, 가 키 「」에 하면, PHP 는 키에 하려고 하고 있습니다.0배열의 [0] 및 [1]에 대해 정의되지 않은 오프셋이 발생하여 오류가 발생합니다.

어레이가 있는 경우:

$votes = array('1','2','3');

이제 다음 항목에 액세스할 수 있습니다.

$votes[0];
$votes[1];
$votes[2];

접속을 시도하면:

$votes[3];

오류 "Notice:정의되지 않은 오프셋: 3 인치

먼저 어레이가 실제로 존재하는지 확인하십시오.

if (isset($votes)) {
   // Do bad things to the votes array
}

이 답변은 https://stackoverflow.com/a/18880670/1821607을 지원하는 데 도움이 되었습니다.크러쉬 이유 - 인덱스 0은 설정되지 않았습니다.간단하죠.$array = $array + array(null) 0으로 설정되어 확인해야 .isset($array[0])두 번째 변형은 저에게 가장 좋은 접근법입니다.

print_r($votes);$votes0을 사용하다

getAllVotes()는 인덱스가 0 ★★★★★★★★★★★★★★★★★」1결과를 호출하여 원하는 데이터를 반환하고 있는지 확인합니다.

이치노해결 방법은 간단합니다.코드의 어레이 인덱스 위치를 하드 코드하지 마세요.
$data[0]['somekey'] 하다 foreach($data as $data_item) { echo $data_item['somekey']; }
는 다른 할 수 .그 위에 다른 체크도 추가할 수 있습니다.첫 번째 위치나 다른 위치만 필요한 경우 변수를 추가하고 for in loop으로 늘려 루프를 제한할 수도 있습니다.

했듯이, 이 는 이 때문에 합니다.$cur_votes[0]그 결과 오류가 발생합니다.

가 올바르게하기 위해, 을하기 전에 실시합니다."$votes_up = $cur_votes[0]+1;"$cur_votes[0]값을 지정하여 저장된 값이 있는지 여부를 확인합니다.

물론, 저장된 가치는 없습니다.

function getEffectiveVotes($id) 

헤더에 변수는입니다.$id에서는, 「27」이 votes[]어레이가 정의되지 않았으며 범위를 벗어났습니다. ""가 해야 .getEffectiveVotes()2년 전하다★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

function getEffectiveVotes($id, $votes)

이렇게 해야 한다고 말하는 것은 아니지만 PHP가 어레이를 어떻게 통과시키는지 알아보고 참조로 통과시키도록 명시적으로 명시할 필요가 있는지 결정하는 것이 좋습니다.

function getEffectiveVotes($id &$votes)    <---I forget, no time to look it up right now.

마지막으로 콜 함수getEffectiveVotes()두 가지 주장이 모두 들어맞는다는 것은 어디에나 있습니다.

건배.

당신은 이미 그 오류를 알고 있었을지도 모른다.이는 빈 어레이에 액세스하려고 하거나 어레이의 빈 키 값에 액세스하려고 하기 때문입니다.제 프로젝트에서는 어레이를 카운트하고 결과를 표시하는 데 있어서 이 에러가 발생하고 있습니다.

다음과 같이 할 수 있습니다.

if(count($votes) == '0'){

    echo 'Sorry, no votes are available at the moment.';
}
else{
    //do the stuff with votes
}

count($votes)의 수를 세다$votes배열이 0일 경우(0)커스텀 메시지를 표시하거나 특정 페이지로 리다이렉트 할 수 있습니다.$votes이렇게 하면,Notice: Undefined offset: 0PHP로 통지합니다.

괄호를 생략하면 기본적으로 PHP가 키를 할당합니다.

이것을 시험해 보세요.

$votes = $row['votes_up']; 
$votes = $row['votes_down']; 

내 경우엔 단순한 타입이었다.

$_SESSION['role' == 'ge']

올바른 닫힘 브래킷이 누락되었습니다.

$_SESSION['role'] == 'ge'

dompdf/dompdf를 사용하는 경우 vendor/dompdf/dompdf/src/Cellmap에서 오류가 발생합니다.php update_row_group 메서드에서 잘못된 프레임 ID를 사용하고 있는 것 같습니다.초기 테스트에서 확인되었습니다.이것은 엄밀히 말하면 페이지 테이블 문제이고 테스트 베드에 있는 문서 중 페이지 테이블이 많지 않기 때문일 수도 있습니다.

800번 선을 다음과 같이 변경해 볼 수 있습니까?

$r_rows = $this->_frames[$g_key]["rows"];
$r_key 대신 $g_key)

https://github.com/dompdf/dompdf/issues/1295

대신 mysql 행 사용

mysql_sysql_rowsqr)

한편, mysqli 또는 PDO의 사용을 검토한다.

?>

다음 명령을 사용하여 데이터 시드 시도:php artisan db:seed.

경고 사용일 뿐입니다.

error_reporting(0);

배열을 초기화하지 않고 인덱스에 직접 값을 할당하는 경우를 나타냅니다.

somefunction{
$raja[0]="this";
$raja[1]="that";
}

대신 다음과 같이 입력합니다.

somefunction{
$raja=array(0=>'this',1='that');
//or
$raja=array("this","that");
}

출력 오류나 예기치 않은 출력을 생성하지 마십시오.

언급URL : https://stackoverflow.com/questions/6549561/notice-undefined-offset-0-in

반응형