尝试访问 null 类型值的数组偏移量PHP

问题描述

问题已解决(在评论中) 我正在为学校制作一个项目,但出现此错误尝试访问这行代码中类型为 null 的值的数组偏移

<div class="user-name"><?PHP echo $guests["firstName"] ?></div>

在这代码中,我从数据库中检索信息

foreach((array)$result as $guests)
        {
    ?>
    <div class="posts-container">
        <div class="post-header">
            <div class="user-details">
                <div class="user-name"><?PHP echo $guests["firstName"] ?></div>
                <div class="user-email"></div>
            </div>
            <div class="time"></div>
        </div>
        <div class="post-message">
            <h3></h3>
            <p></p>
        </div>
    </div>
    <?PHP } ?>

人们要求提供 sql 代码和 $result 的类型/结构 类型/结构: object(MysqLi_result)#2 (5) { ["current_field"]=> int(0) ["field_count"]=> int(9) ["lengths"]=> NULL ["num_rows"]=> int(5 ) ["类型"]=> int(0) sql/数据库

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "guestbook";

// Create connection
$conn = new MysqLi($servername,$username,$password,$dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection Failed: " . $conn->connect_error);
}

$sql = "SELECT id,firstName,lastName,email,title,message,URL,showEmail,Date FROM guestbook";
$result = $conn->query($sql);

$conn->close();

解决方法

您正在尝试以数组形式访问空值。

在您的情况下,std::index_sequence 值为空。因此,访问 template <std::size_t ... Is,typename Tuple,typename Vec> auto helper(std::index_sequence<Is...>,const Tuple& t,const Vec& vec) { constexpr auto N = sizeof...(Is); constexpr auto Size = std::tuple_size<Tuple>::value; if constexpr (Size == 1) { // Unsure what you want here return std::get<0>(t).foo(Vec.head(std::get<0>(t).n)) + std::get<N>(t).foo(Vec.tail(std::get<0>(t).n)); } else if constexpr (N == 0) { return std::get<0>(t).foo(Vec.head(std::get<0>(t).n)); } else if constexpr (N + 1 == Size) { return std::get<N>(t).foo(Vec.tail(std::get<N>(t).n)); } else { return std::get<N>(t).foo(Vec.segment((0 + ... + std::get<Is>(t).n),std::get<N>(t).n)); } } template <std::size_t ... Is,typename Vec> auto summation(std::index_sequence<Is...>,const Vec& vec) { return (0 + ... + helper(std::make_index_sequence<Is>(),t,vec)); } template <typename Tuple,typename Vec> auto summation(const Tuple& t,const Vec& vec) { constexpr auto Size = std::tuple_size<Tuple>::value; return summation(std::make_index_sequence<Size>(),vec)); } 将抛出一个“注意:尝试访问类型为 null 的值的数组偏移量”

两个建议:

  1. 检查 $guest 值(快速):

    $guest['something']
  2. 检查 $guest 值(更好):

    如果 foreach((array)$result as $guests) { if (!is_array($guests)) { continue; } 是 SQL 查询的结果,可以尝试添加条件以避免 NULL 结果。 或者,使用 $result 之前删除空值。

,

那是因为这条线

stage('Copy Cost File To Jenkins'){
        withCredentials([sshUserPrivateKey(credentialsId: "462e5c76-fae2-4d66-a72b-15ddba9dc785",keyFileVariable: 'my_private_key_file')]) {
            sh "scp -i ${my_private_key_file} -v myuser@mycompany.com:/some_path/SSC*.CP037 host-dirs/cost-files"
        }
    }

这不是你想要的,你需要像这样获取结果

$result = $conn->query($sql);
,

你可以试试这样的

<?php
//Array to be shown
$guests = [
        ['firstName' => 'Alex','email' => 'user@user.ru'],['firstName' => 'Jhon','email' => 'user@user.ru']
];
?>
<div class="posts-container">
    <div class="post-header">
        <div class="user-details">
        <!-- foreach alternate syntax -->
        <?foreach ($guests as $guest):?>
            <div class="user-name"><?=$guest['firstName']?></div>
            <div class="user-email"><?=$guest['email']?></div>
        <!-- foreach alternate syntax -->
        <?endforeach;?>
    </div>
    <div class="time"></div>
</div>
<div class="post-message">
    <h3></h3>
    <p></p>
</div>